{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "1QiCFLer1FIe" }, "source": [ "**Lab 11 – Dimensional reduction and clustering**" ] }, { "cell_type": "markdown", "metadata": { "id": "vCyq3-8y1FIj" }, "source": [ "_This notebook contains the sample from https://www.kaggle.com/learn/feature-engineering, https://inria.github.io/scikit-learn-mooc/python_scripts/dev_features_importance.html#, https://scikit-learn.org/stable/modules/feature_selection.html, https://scikit-learn.org/stable/modules/preprocessing.html#, https://scikit-learn.org/stable/modules/unsupervised_reduction.html and https://github.com/ageron/handson-ml2/blob/master/09_unsupervised_learning.ipynb" ] }, { "cell_type": "markdown", "metadata": { "id": "9J5g6PDs1FIk" }, "source": [ "\n", " \n", " \n", "
\n", " \"Open\n", " \n", " \n", "
" ] }, { "cell_type": "code", "source": [ "!pip install Boruta\n", "!pip install opentsne\n", "!pip install umap-learn" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TTpvSn-KRgu_", "outputId": "54330545-d536-4a9d-dbf7-dc0c67f90e39" }, "execution_count": 108, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Requirement already satisfied: Boruta in /usr/local/lib/python3.7/dist-packages (0.3)\n", "Requirement already satisfied: scikit-learn>=0.17.1 in /usr/local/lib/python3.7/dist-packages (from Boruta) (1.0.2)\n", "Requirement already satisfied: scipy>=0.17.0 in /usr/local/lib/python3.7/dist-packages (from Boruta) (1.4.1)\n", "Requirement already satisfied: numpy>=1.10.4 in /usr/local/lib/python3.7/dist-packages (from Boruta) (1.21.6)\n", "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.17.1->Boruta) (1.1.0)\n", "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.17.1->Boruta) (3.1.0)\n", "Requirement already satisfied: opentsne in /usr/local/lib/python3.7/dist-packages (0.6.2)\n", "Requirement already satisfied: numpy>=1.16.6 in /usr/local/lib/python3.7/dist-packages (from opentsne) (1.21.6)\n", "Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (from opentsne) (1.4.1)\n", "Requirement already satisfied: scikit-learn>=0.20 in /usr/local/lib/python3.7/dist-packages (from opentsne) (1.0.2)\n", "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.20->opentsne) (3.1.0)\n", "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.20->opentsne) (1.1.0)\n", "Collecting umap-learn\n", " Downloading umap-learn-0.5.3.tar.gz (88 kB)\n", "\u001b[K |████████████████████████████████| 88 kB 4.7 MB/s \n", "\u001b[?25hRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.7/dist-packages (from umap-learn) (1.21.6)\n", "Requirement already satisfied: scikit-learn>=0.22 in /usr/local/lib/python3.7/dist-packages (from umap-learn) (1.0.2)\n", "Requirement already satisfied: scipy>=1.0 in /usr/local/lib/python3.7/dist-packages (from umap-learn) (1.4.1)\n", "Requirement already satisfied: numba>=0.49 in /usr/local/lib/python3.7/dist-packages (from umap-learn) (0.51.2)\n", "Collecting pynndescent>=0.5\n", " Downloading pynndescent-0.5.6.tar.gz (1.1 MB)\n", "\u001b[K |████████████████████████████████| 1.1 MB 43.0 MB/s \n", "\u001b[?25hRequirement already satisfied: tqdm in /usr/local/lib/python3.7/dist-packages (from umap-learn) (4.64.0)\n", "Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from numba>=0.49->umap-learn) (57.4.0)\n", "Requirement already satisfied: llvmlite<0.35,>=0.34.0.dev0 in /usr/local/lib/python3.7/dist-packages (from numba>=0.49->umap-learn) (0.34.0)\n", "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from pynndescent>=0.5->umap-learn) (1.1.0)\n", "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.22->umap-learn) (3.1.0)\n", "Building wheels for collected packages: umap-learn, pynndescent\n", " Building wheel for umap-learn (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for umap-learn: filename=umap_learn-0.5.3-py3-none-any.whl size=82829 sha256=da74e5543b87d2622e3b52ec5d22885cca380304f0cab864c22ea213ca2772cf\n", " Stored in directory: /root/.cache/pip/wheels/b3/52/a5/1fd9e3e76a7ab34f134c07469cd6f16e27ef3a37aeff1fe821\n", " Building wheel for pynndescent (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for pynndescent: filename=pynndescent-0.5.6-py3-none-any.whl size=53943 sha256=e3b27cfabfad50b66be2d564d14ffdb820563b3bbff57d51323d3e825e997ae1\n", " Stored in directory: /root/.cache/pip/wheels/03/f1/56/f80d72741e400345b5a5b50ec3d929aca581bf45e0225d5c50\n", "Successfully built umap-learn pynndescent\n", "Installing collected packages: pynndescent, umap-learn\n", "Successfully installed pynndescent-0.5.6 umap-learn-0.5.3\n" ] } ] }, { "cell_type": "code", "source": [ "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "\n", "from sklearn.datasets import load_iris\n", "from sklearn.datasets import load_digits\n", "from sklearn.datasets import fetch_california_housing\n", "from sklearn.datasets import make_classification\n", "\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.pipeline import make_pipeline, Pipeline\n", "\n", "from sklearn.feature_selection import VarianceThreshold\n", "from sklearn.feature_selection import SelectKBest\n", "from sklearn.feature_selection import chi2\n", "from sklearn.feature_selection import f_classif\n", "from sklearn.feature_selection import mutual_info_regression\n", "from sklearn.feature_selection import SequentialFeatureSelector\n", "from sklearn.feature_selection import SelectFromModel\n", "from sklearn.inspection import permutation_importance\n", "\n", "from sklearn.model_selection import cross_validate\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.model_selection import RepeatedKFold\n", "from sklearn.model_selection import GridSearchCV\n", "\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.ensemble import RandomForestRegressor\n", "from sklearn.linear_model import RidgeCV\n", "from sklearn.linear_model import Lasso\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.svm import LinearSVC\n", "from sklearn.svm import SVC\n", "\n", "from boruta import BorutaPy\n", "\n", "from sklearn.decomposition import PCA\n", "from openTSNE import TSNE as oTSNE\n", "import umap\n", "\n", "from sklearn.cluster import KMeans\n", "from sklearn.cluster import FeatureAgglomeration\n", "\n", "import matplotlib as mpl\n", "from matplotlib import pyplot as plt\n", "%matplotlib inline" ], "metadata": { "id": "5bV_HvPiH-9i" }, "execution_count": 181, "outputs": [] }, { "cell_type": "code", "source": [ "# Upload the API’s key JSON file to your Colab\n", "# session by running the following code in a notebook cell:\n", "from google.colab import files\n", "files.upload()" ], "metadata": { "colab": { "resources": { "http://localhost:8080/nbextensions/google.colab/files.js": { "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgZG8gewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwoKICAgICAgbGV0IHBlcmNlbnREb25lID0gZmlsZURhdGEuYnl0ZUxlbmd0aCA9PT0gMCA/CiAgICAgICAgICAxMDAgOgogICAgICAgICAgTWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCk7CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPSBgJHtwZXJjZW50RG9uZX0lIGRvbmVgOwoKICAgIH0gd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCk7CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK", "ok": true, "headers": [ [ "content-type", "application/javascript" ] ], "status": 200, "status_text": "" } }, "base_uri": "https://localhost:8080/", "height": 92 }, "id": "wGIhk6PolW1K", "outputId": "05e411b9-9352-4293-f223-58fb05ee57cd" }, "execution_count": 20, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "Saving kaggle.json to kaggle.json\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "{'kaggle.json': b'{\"username\":\"phonchi\",\"key\":\"543eb33eabf413fb77a6b374f96ccfca\"}'}" ] }, "metadata": {}, "execution_count": 20 } ] }, { "cell_type": "code", "source": [ "!mkdir ~/.kaggle\n", "!cp kaggle.json ~/.kaggle/\n", "!chmod 600 ~/.kaggle/kaggle.json" ], "metadata": { "id": "pOIWaP0RlcFv" }, "execution_count": 21, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Feature selection" ], "metadata": { "id": "VcdwxGJwV8vU" } }, { "cell_type": "markdown", "source": [ "The classes in the `sklearn.feature_selection` module can be used for feature selection/dimensionality reduction on sample sets, either to improve estimators’ accuracy scores or to boost their performance on very high-dimensional datasets." ], "metadata": { "id": "Uf513TCeWSX0" } }, { "cell_type": "markdown", "source": [ "### Removing low variance features" ], "metadata": { "id": "RCajAbcsWdxE" } }, { "cell_type": "markdown", "source": [ "Suppose that we have a dataset with boolean features, and we want to remove all features that are either one or zero (on or off) in more than 80% of the samples. Boolean features are Bernoulli random variables, and the variance of such variables is `0.8 * (1 - 0.8)`" ], "metadata": { "id": "pCPKnW7rWhfV" } }, { "cell_type": "code", "source": [ "X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]" ], "metadata": { "id": "S10Rp8tJWCH2" }, "execution_count": 1, "outputs": [] }, { "cell_type": "code", "source": [ "sel = VarianceThreshold(threshold=(.8 * (1 - .8)))\n", "sel.fit_transform(X)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XPhKdizqcvtk", "outputId": "ec4b5e4e-a06a-49a0-91bc-e444801c8d09" }, "execution_count": 3, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[0, 1],\n", " [1, 0],\n", " [0, 0],\n", " [1, 1],\n", " [1, 0],\n", " [1, 1]])" ] }, "metadata": {}, "execution_count": 3 } ] }, { "cell_type": "markdown", "source": [ "As expected, `VarianceThreshold` has removed the first column, which has a probability of containing a zero." ], "metadata": { "id": "JLZi5CgFczbS" } }, { "cell_type": "markdown", "source": [ "### Univariate feature selection" ], "metadata": { "id": "ymMz_smRc8N6" } }, { "cell_type": "markdown", "source": [ "`Scikit-learn` exposes feature selection routines as objects that implement the transform method. For instance, we can perform a $\\chi^2$ test to the samples to retrieve only the two best features as follows:" ], "metadata": { "id": "OsocPngMc9hZ" } }, { "cell_type": "code", "source": [ "X, y = load_iris(return_X_y=True)\n", "X.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "T73LeQPxcytF", "outputId": "8bc1762e-26b9-4bbc-92e1-b64965f442fe" }, "execution_count": 5, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(150, 4)" ] }, "metadata": {}, "execution_count": 5 } ] }, { "cell_type": "code", "source": [ "X_new = SelectKBest(chi2, k=2).fit_transform(X, y)\n", "X_new.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "U---Mg1DesiC", "outputId": "6f3086d8-4882-42ff-af90-80fed76e0574" }, "execution_count": 6, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(150, 2)" ] }, "metadata": {}, "execution_count": 6 } ] }, { "cell_type": "markdown", "source": [ "These objects take as input a scoring function that returns univariate scores and p-values (or only scores for `SelectKBest` and `SelectPercentile`):\n", "\n", "* For regression: `f_regression`, `mutual_info_regression`\n", "* For classification: `chi2`, `f_classif`, `mutual_info_classif`" ], "metadata": { "id": "Rh4TnGG4e2yo" } }, { "cell_type": "markdown", "source": [ "The methods based on F-test estimate the degree of linear dependency between two random variables. For example, we create a dataset with two informative features among a hundred. To simplify our example, we do not include either redundant or repeated features." ], "metadata": { "id": "QxVJKlWDe-9Z" } }, { "cell_type": "code", "source": [ "data, target = make_classification(\n", " n_samples=5000,\n", " n_features=100,\n", " n_informative=2,\n", " n_redundant=0,\n", " n_repeated=0,\n", " random_state=0,\n", ")" ], "metadata": { "id": "7i4IUKasewA6" }, "execution_count": 9, "outputs": [] }, { "cell_type": "markdown", "source": [ "We will create two machine learning pipelines. The former will be a random forest that will use all available features. The latter will also be a random forest, but we will add a feature selection step to train this classifier. " ], "metadata": { "id": "JiKLn-26fiJw" } }, { "cell_type": "code", "source": [ "# Let’s create the model without any feature selection\n", "model_without_selection = RandomForestClassifier(n_jobs=2)" ], "metadata": { "id": "gbat_wsOfakf" }, "execution_count": 11, "outputs": [] }, { "cell_type": "code", "source": [ "# Then, let’s create a pipeline where the first stage will make the feature selection processing.\n", "model_with_selection = make_pipeline(\n", " SelectKBest(score_func=f_classif, k=2),\n", " RandomForestClassifier(n_jobs=2),\n", ")" ], "metadata": { "id": "fwxayZ8Sfyfx" }, "execution_count": 12, "outputs": [] }, { "cell_type": "markdown", "source": [ "We will measure the average time spent to train each pipeline and make it predict. Besides, we will compute the testing score of the model. We will collect these results via cross-validation." ], "metadata": { "id": "2vWsIOdMf8sS" } }, { "cell_type": "code", "source": [ "# Let’s start with the random forest without feature selection. We will store the results into a dataframe.\n", "cv_results_without_selection = cross_validate(model_without_selection, data, target)\n", "cv_results_without_selection = pd.DataFrame(cv_results_without_selection)" ], "metadata": { "id": "-bgBAgvPf6QA" }, "execution_count": 13, "outputs": [] }, { "cell_type": "code", "source": [ "# Now, we will repeat the process for the pipeline incorporating the feature selection.\n", "cv_results_with_selection = cross_validate(\n", " model_with_selection, data, target, return_estimator=True)\n", "cv_results_with_selection = pd.DataFrame(cv_results_with_selection)" ], "metadata": { "id": "No1nRqWigBE0" }, "execution_count": 14, "outputs": [] }, { "cell_type": "markdown", "source": [ "To analyze the results, we will merge the results from the two pipeline in a single pandas dataframe." ], "metadata": { "id": "hJUbhzd6gJtp" } }, { "cell_type": "code", "source": [ "cv_results = pd.concat(\n", " [cv_results_without_selection, cv_results_with_selection],\n", " axis=1,\n", " keys=[\"Without feature selection\", \"With feature selection\"],\n", ")\n", "# swap the level of the multi-index of the columns\n", "cv_results = cv_results.swaplevel(axis=\"columns\")" ], "metadata": { "id": "NwKMH8AlgIz0" }, "execution_count": 15, "outputs": [] }, { "cell_type": "markdown", "source": [ "Let’s first analyze the train and score time for each pipeline." ], "metadata": { "id": "APuAuoLQgNgh" } }, { "cell_type": "code", "source": [ "color = {\"whiskers\": \"black\", \"medians\": \"black\", \"caps\": \"black\"}\n", "cv_results[\"fit_time\"].plot.box(color=color, vert=False)\n", "plt.xlabel(\"Elapsed time (s)\")\n", "_ = plt.title(\"Time to fit the model\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 295 }, "id": "NyjNNnEtgM77", "outputId": "05459d87-12c9-4623-9de8-09998b41be53" }, "execution_count": 16, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "cv_results[\"score_time\"].plot.box(color=color, vert=False)\n", "plt.xlabel(\"Elapsed time (s)\")\n", "_ = plt.title(\"Time to make prediction\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 295 }, "id": "IHk6it43gSKM", "outputId": "10be241a-3559-41da-965d-ae378cb5f852" }, "execution_count": 17, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "We can draw the same conclusions for both training and scoring elapsed time: selecting the most informative features speed-up our pipeline. Of course, such speed-up is beneficial only if the generalization performance in terms of metrics remain the same. Let’s check the testing score." ], "metadata": { "id": "5tHmNZ85gmPa" } }, { "cell_type": "code", "source": [ "cv_results[\"test_score\"].plot.box(color=color, vert=False)\n", "plt.xlabel(\"Accuracy score\")\n", "_ = plt.title(\"Test score via cross-validation\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 295 }, "id": "4onQdLXGgfJn", "outputId": "3ff34056-5a48-4bb1-abdb-ab2b5ada7f8c" }, "execution_count": 18, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "We can observe that the model’s generalization performance selecting a subset of features decreases compared with the model using all available features. Since we generated the dataset, we can infer that the decrease is because of the selection. The feature selection algorithm did not choose the two informative features." ], "metadata": { "id": "n_Ym3R87g4vw" } }, { "cell_type": "code", "source": [ "for idx, pipeline in enumerate(cv_results_with_selection[\"estimator\"]):\n", " print(\n", " f\"Fold #{idx} - features selected are: \"\n", " f\"{np.argsort(pipeline[0].scores_)[-2:]}\"\n", " )" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "mTUZGkUPgowf", "outputId": "87061117-1f82-4759-ac85-ef5ec8385e56" }, "execution_count": 19, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Fold #0 - features selected are: [89 53]\n", "Fold #1 - features selected are: [29 53]\n", "Fold #2 - features selected are: [52 53]\n", "Fold #3 - features selected are: [49 53]\n", "Fold #4 - features selected are: [49 53]\n" ] } ] }, { "cell_type": "markdown", "source": [ "We see that the feature 53 is always selected while the other feature varies depending on the cross-validation fold.\n", "\n", "If we would like to keep our score with similar generalization performance, **we could choose another metric to perform the test or select more features.** For instance, we could select the number of features based on a specific percentile of the highest scores." ], "metadata": { "id": "RgTtgRS5hBBJ" } }, { "cell_type": "markdown", "source": [ "#### Mutual information" ], "metadata": { "id": "HiK_yc8kk4GI" } }, { "cell_type": "markdown", "source": [ "The [*Automobile*](https://www.kaggle.com/toramky/automobile-dataset) dataset consists of 193 cars from the 1985 model year. The goal for this dataset is to predict a car's `price` (the target) from 23 of the car's features, such as `make`, `body_style`, and `horsepower`. In this example, we'll rank the features with mutual information and investigate the results by data visualization. (The original dataset requires data cleaning, you could refer to https://skill-lync.com/student-projects/project-1-1299)" ], "metadata": { "id": "k-V69-wYlCxA" } }, { "cell_type": "code", "source": [ "df = pd.read_csv(\"autos.csv\")\n", "df.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 352 }, "id": "lg40S0_0llto", "outputId": "d7663ccb-de86-4e56-b1d5-d4c0e5287c48" }, "execution_count": 33, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " symboling make fuel_type aspiration num_of_doors body_style \\\n", "0 3 alfa-romero gas std 2 convertible \n", "1 3 alfa-romero gas std 2 convertible \n", "2 1 alfa-romero gas std 2 hatchback \n", "3 2 audi gas std 4 sedan \n", "4 2 audi gas std 4 sedan \n", "\n", " drive_wheels engine_location wheel_base length ... engine_size \\\n", "0 rwd front 88.6 168.8 ... 130 \n", "1 rwd front 88.6 168.8 ... 130 \n", "2 rwd front 94.5 171.2 ... 152 \n", "3 fwd front 99.8 176.6 ... 109 \n", "4 4wd front 99.4 176.6 ... 136 \n", "\n", " fuel_system bore stroke compression_ratio horsepower peak_rpm city_mpg \\\n", "0 mpfi 3.47 2.68 9 111 5000 21 \n", "1 mpfi 3.47 2.68 9 111 5000 21 \n", "2 mpfi 2.68 3.47 9 154 5000 19 \n", "3 mpfi 3.19 3.40 10 102 5500 24 \n", "4 mpfi 3.19 3.40 8 115 5500 18 \n", "\n", " highway_mpg price \n", "0 27 13495 \n", "1 27 16500 \n", "2 26 16500 \n", "3 30 13950 \n", "4 22 17450 \n", "\n", "[5 rows x 25 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
symbolingmakefuel_typeaspirationnum_of_doorsbody_styledrive_wheelsengine_locationwheel_baselength...engine_sizefuel_systemborestrokecompression_ratiohorsepowerpeak_rpmcity_mpghighway_mpgprice
03alfa-romerogasstd2convertiblerwdfront88.6168.8...130mpfi3.472.6891115000212713495
13alfa-romerogasstd2convertiblerwdfront88.6168.8...130mpfi3.472.6891115000212716500
21alfa-romerogasstd2hatchbackrwdfront94.5171.2...152mpfi2.683.4791545000192616500
32audigasstd4sedanfwdfront99.8176.6...109mpfi3.193.40101025500243013950
42audigasstd4sedan4wdfront99.4176.6...136mpfi3.193.4081155500182217450
\n", "

5 rows × 25 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 33 } ] }, { "cell_type": "markdown", "source": [ "The scikit-learn algorithm for MI treats discrete features differently from continuous features. Consequently, you need to tell it which are which. As a rule of thumb, anything that *must* have a `float` dtype is *not* discrete. Categoricals (`object` or `categorial` dtype) can be treated as discrete by giving them a label encoding" ], "metadata": { "id": "YX3VJQKJl4hf" } }, { "cell_type": "code", "source": [ "X = df.copy()\n", "y = X.pop(\"price\")\n", "\n", "# Label encoding for categoricals\n", "for colname in X.select_dtypes(\"object\"):\n", " X[colname], _ = X[colname].factorize()\n", "\n", "# All discrete features should now have integer dtypes (double-check this before using MI!)\n", "discrete_features = X.dtypes == int" ], "metadata": { "id": "VOVazcEFlv6Q" }, "execution_count": 34, "outputs": [] }, { "cell_type": "markdown", "source": [ "Scikit-learn has two mutual information metrics in its `feature_selection` module: one for real-valued targets (`mutual_info_regression`) and one for categorical targets (`mutual_info_classif`). Our target, `price`, is real-valued. The next cell computes the MI scores for our features and wraps them up in a nice dataframe." ], "metadata": { "id": "SgQfNAYNmGhw" } }, { "cell_type": "code", "source": [ "def make_mi_scores(X, y, discrete_features):\n", " mi_scores = mutual_info_regression(X, y, discrete_features=discrete_features)\n", " mi_scores = pd.Series(mi_scores, name=\"MI Scores\", index=X.columns)\n", " mi_scores = mi_scores.sort_values(ascending=False)\n", " return mi_scores\n", "\n", "mi_scores = make_mi_scores(X, y, discrete_features)\n", "mi_scores[::3] # show a few features with their MI scores" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "36ZK4lJNmDZi", "outputId": "b67fcb48-2df8-4f98-f0c9-397a177f06f5" }, "execution_count": 35, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "curb_weight 1.552832\n", "highway_mpg 0.959290\n", "length 0.615354\n", "bore 0.504682\n", "stroke 0.391373\n", "num_of_cylinders 0.330589\n", "compression_ratio 0.134892\n", "fuel_type 0.047279\n", "Name: MI Scores, dtype: float64" ] }, "metadata": {}, "execution_count": 35 } ] }, { "cell_type": "code", "source": [ "def plot_mi_scores(scores):\n", " scores = scores.sort_values(ascending=True)\n", " width = np.arange(len(scores))\n", " ticks = list(scores.index)\n", " plt.barh(width, scores)\n", " plt.yticks(width, ticks)\n", " plt.title(\"Mutual Information Scores\")\n", "\n", "\n", "plt.figure(dpi=100, figsize=(8, 5))\n", "plot_mi_scores(mi_scores)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 460 }, "id": "Vi9tYOlEmKvL", "outputId": "c741f89c-0c60-4f4d-fa84-d02500098898" }, "execution_count": 36, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "# As we might expect, the high-scoring `curb_weight` feature exhibits a strong relationship with `price`, the target.\n", "sns.relplot(x=\"curb_weight\", y=\"price\", data=df)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 387 }, "id": "zDs3GY-Fo8zW", "outputId": "e4157100-6d61-4295-efbe-512029b07e61" }, "execution_count": 37, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 37 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "The `fuel_type` feature has a fairly low MI score, but as we can see from the figure, it clearly separates two `price` populations with different trends within the `horsepower` feature. **This indicates that `fuel_type` contributes an interaction effect and might not be unimportant after all.** Before deciding a feature is unimportant from its MI score, it's good to investigate any possible interaction effects -- domain knowledge can offer a lot of guidance here." ], "metadata": { "id": "A34J5fAZpNJO" } }, { "cell_type": "code", "source": [ "sns.lmplot(x=\"horsepower\", y=\"price\", hue=\"fuel_type\", data=df);" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 369 }, "id": "TCwOeNdepGUP", "outputId": "7255762f-7168-44a9-cd38-6c578861b4c1" }, "execution_count": 38, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "### Sequential feature selection" ], "metadata": { "id": "o0rWGFi9pvq4" } }, { "cell_type": "markdown", "source": [ "Sequential Feature Selection is available in the `SequentialFeatureSelector` transformer. SFS can be either forward or backward:\n", "\n", "* Forward-SFS is a greedy procedure that iteratively finds the best new feature to add to the set of selected features. Concretely, we initially start with zero feature and find the one feature that maximizes a cross-validated score when an estimator is trained on this single feature. Once that first feature is selected, we repeat the procedure by adding a new feature to the set of selected features. The procedure stops when the desired number of selected features is reached, as determined by the n_features_to_select parameter.\n", "\n", "* Backward-SFS follows the same idea but works in the opposite direction: instead of starting with no feature and greedily adding features, we start with all the features and greedily remove features from the set. The direction parameter controls whether forward or backward SFS is used.\n", "\n", "In general, forward and backward selection do not yield equivalent results. Also, one may be much faster than the other depending on the requested number of selected features: if we have 10 features and ask for 7 selected features, forward selection would need to perform 7 iterations while backward selection would only need to perform 3." ], "metadata": { "id": "wAQBoFEVp1X1" } }, { "cell_type": "code", "source": [ "X, y = load_iris(return_X_y=True)\n", "knn = KNeighborsClassifier(n_neighbors=3)" ], "metadata": { "id": "XN-VAbTRpV_I" }, "execution_count": 41, "outputs": [] }, { "cell_type": "code", "source": [ "sfs = SequentialFeatureSelector(knn, n_features_to_select=3)\n", "sfs.fit(X, y)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "FWjzoHnk-Orv", "outputId": "2d761371-31d3-4f4b-ed23-a9b2c9e865e7" }, "execution_count": 42, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "SequentialFeatureSelector(estimator=KNeighborsClassifier(n_neighbors=3),\n", " n_features_to_select=3)" ] }, "metadata": {}, "execution_count": 42 } ] }, { "cell_type": "code", "source": [ "sfs.transform(X).shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "8pYRsVKX-nk8", "outputId": "06c63564-28e1-4912-9a03-e99e64660ed7" }, "execution_count": 43, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(150, 3)" ] }, "metadata": {}, "execution_count": 43 } ] }, { "cell_type": "markdown", "source": [ "### Feature selection from model" ], "metadata": { "id": "Wkh5pr70-sCN" } }, { "cell_type": "markdown", "source": [ "`SelectFromModel` is a meta-transformer that can be used alongside any estimator that assigns importance to each feature through a specific attribute (such as `coef_`, `feature_importances_`) or via an `importance_getter` callable after fitting. The features are considered unimportant and removed if the corresponding importance of the feature values are below the provided threshold parameter. \n", "\n", "Apart from specifying the threshold numerically, there are built-in heuristics for finding a threshold using a string argument. Available heuristics are “mean”, “median” and float multiples of these like “0.1*mean”. In combination with the threshold criteria, one can use the `max_features` parameter to set a limit on the number of features to select." ], "metadata": { "id": "cAf7ARk0Howp" } }, { "cell_type": "code", "source": [ "X, y = load_iris(return_X_y=True)" ], "metadata": { "id": "gkWQgTpd-pwt" }, "execution_count": 45, "outputs": [] }, { "cell_type": "code", "source": [ "lsvc = LinearSVC(C=0.01, penalty=\"l1\", dual=False).fit(X, y)" ], "metadata": { "id": "NvnykC0WJC4_" }, "execution_count": 48, "outputs": [] }, { "cell_type": "code", "source": [ "model = SelectFromModel(lsvc, prefit=True)" ], "metadata": { "id": "jsBkMzF4JFAb" }, "execution_count": 49, "outputs": [] }, { "cell_type": "code", "source": [ "X_new = model.transform(X)\n", "X_new.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "WbuJtKY2JFRg", "outputId": "d9739206-61be-4a02-dec1-4e5dc3957a57" }, "execution_count": 50, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(150, 3)" ] }, "metadata": {}, "execution_count": 50 } ] }, { "cell_type": "markdown", "source": [ "### A Concret example" ], "metadata": { "id": "3zP7dVWRLgmn" } }, { "cell_type": "markdown", "source": [ "The following dataset is a record of neighborhoods in California district, predicting the median house value (target) given some information about the neighborhoods, as the average number of rooms, the latitude, the longitude or the median income of people in the neighborhoods (block)." ], "metadata": { "id": "k8srd8jgJZ94" } }, { "cell_type": "code", "source": [ "X, y = fetch_california_housing(as_frame=True, return_X_y=True)" ], "metadata": { "id": "qT8aM1mqJN3J" }, "execution_count": 52, "outputs": [] }, { "cell_type": "code", "source": [ "# To speed up the computation, we take the first 10000 samples\n", "X = X[:10000]\n", "y = y[:10000]\n", "X.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "nUIwkfs4JlWO", "outputId": "ad99d5a2-70ed-47c2-d5be-11aa243806b2" }, "execution_count": 53, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " MedInc HouseAge AveRooms AveBedrms Population AveOccup Latitude \\\n", "0 8.3252 41.0 6.984127 1.023810 322.0 2.555556 37.88 \n", "1 8.3014 21.0 6.238137 0.971880 2401.0 2.109842 37.86 \n", "2 7.2574 52.0 8.288136 1.073446 496.0 2.802260 37.85 \n", "3 5.6431 52.0 5.817352 1.073059 558.0 2.547945 37.85 \n", "4 3.8462 52.0 6.281853 1.081081 565.0 2.181467 37.85 \n", "\n", " Longitude \n", "0 -122.23 \n", "1 -122.22 \n", "2 -122.24 \n", "3 -122.25 \n", "4 -122.25 " ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MedIncHouseAgeAveRoomsAveBedrmsPopulationAveOccupLatitudeLongitude
08.325241.06.9841271.023810322.02.55555637.88-122.23
18.301421.06.2381370.9718802401.02.10984237.86-122.22
27.257452.08.2881361.073446496.02.80226037.85-122.24
35.643152.05.8173521.073059558.02.54794537.85-122.25
43.846252.06.2818531.081081565.02.18146737.85-122.25
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 53 } ] }, { "cell_type": "markdown", "source": [ "The feature reads as follow:\n", "\n", "* MedInc: median income in block\n", "* HouseAge: median house age in block\n", "* AveRooms: average number of rooms\n", "* AveBedrms: average number of bedrooms\n", "* Population: block population\n", "* AveOccup: average house occupancy\n", "* Latitude: house block latitude\n", "* Longitude: house block longitude\n", "* MedHouseVal: Median house value in 100k$ (target)\n", "\n", "To assert the quality of our inspection technique, let’s add some random feature that won’t help the prediction (un-informative feature)" ], "metadata": { "id": "8i7IQeucJsWY" } }, { "cell_type": "code", "source": [ "# Adding random features\n", "rng = np.random.RandomState(0)\n", "bin_var = pd.Series(rng.randint(0, 1, X.shape[0]), name='rnd_bin')\n", "num_var = pd.Series(np.arange(X.shape[0]), name='rnd_num')\n", "X_with_rnd_feat = pd.concat((X, bin_var, num_var), axis=1)" ], "metadata": { "id": "SLi9SoU6JqWe" }, "execution_count": 54, "outputs": [] }, { "cell_type": "code", "source": [ "X_train, X_test, y_train, y_test = train_test_split(X_with_rnd_feat, y, random_state=42)" ], "metadata": { "id": "OjVGGwhmJz91" }, "execution_count": 57, "outputs": [] }, { "cell_type": "markdown", "source": [ "In linear models, the target value is modeled as a linear combination of the features." ], "metadata": { "id": "m8Byb20-KF5I" } }, { "cell_type": "code", "source": [ "model = RidgeCV()\n", "\n", "model.fit(X_train, y_train)\n", "\n", "print(f'model score on training data: {model.score(X_train, y_train)}')\n", "print(f'model score on testing data: {model.score(X_test, y_test)}')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "CVQ3s5uuJ83F", "outputId": "829c716a-43ca-4701-d474-d7bc862f15c8" }, "execution_count": 60, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "model score on training data: 0.6048814128047645\n", "model score on testing data: 0.5866391379089506\n" ] } ] }, { "cell_type": "markdown", "source": [ "Our linear model obtains a $R^2$ score of .60, so it explains a significant part of the target. Its coefficient should be somehow relevant. Let’s look at the coefficient learnt" ], "metadata": { "id": "41HBpjFYKe4a" } }, { "cell_type": "code", "source": [ "coefs = pd.DataFrame(\n", " model.coef_,\n", " columns=['Coefficients'], index=X_train.columns\n", ")\n", "\n", "coefs.plot(kind='barh', figsize=(9, 7))\n", "plt.title('Ridge model')\n", "plt.axvline(x=0, color='.5')\n", "plt.subplots_adjust(left=.3)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 444 }, "id": "tdWavBbTKZxa", "outputId": "5f300833-73c9-463b-9666-95a1863b9925" }, "execution_count": 61, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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UznqqKP43e9+x7Rp05g6dSpbbrkll112Wevr5IxUkjSsG264ge233/457d/97neZM2cO1113Hffeey877LAD06ZN4/rrr+e2227jyiuvpKrYa6+9mDVrFieffDIXXHABl1xyCeuuuy6vfe1rOeGEEzjvvPOeNe7g4CCHHHIIs2bN4hWveAX33Xffc479kY98hI9+9KPssssu/OpXv2K33Xbj5ptvBuCWW27hkksu4aGHHuLP//zP+bu/+zuOPfZYbrjhhmdmv5///OfZbbfd+MQnPsFTTz3FI4880vo6GaSSpCXy85//nAMPPJBVVlmF9ddfnze84Q1cddVVzJo1iwsvvJBtt90WgAULFnDbbbcxbdq0UY07e/Zspk2b9sznN9dZZ53n9PnJT37CTTfd9Mz6H//4RxYsWADAnnvuyeqrr87qq6/Oeuutxz333POc/XfYYQfe//7388QTT7D33nszderUJT7/oQxSSdKwtthiC77zne+Mun9V8fGPf5y//du/XWY1Pf3008yePZuJEyc+Z9vqq6/+zPIqq6zCk08++Zw+06ZNY9asWZx//vnMmDGDI488kve+972tavIZqSRpWG9605t4/PHHOeWUU55pmzt3LmuvvTbf+ta3eOqppxgcHGTWrFnsuOOO7Lbbbpx66qnPzBB/85vf8Ic//GHUx9tpp52YNWsWd955J8Cwt3Z33XVXvvSlLz2zvvCW7UjWWmstHnrooWfW7777btZff30OOeQQ/uZv/oZrrrlm1PWNZFzMSJP0AedV1ZY9LkWSxqXRflxlaUrCueeeyxFHHMFxxx3HxIkT6evr44tf/CILFixgm222IQmf+9zn2GCDDdhggw24+eabed3rXgfApEmTOPPMM1lvvfVGdbwpU6ZwyimnsO+++/L000+z3nrrcdFFFz2rz4knnsiHPvQhtt56a5588kmmTZvGySefPOKYkydPZuedd2bLLbdkjz32YMstt+T4449n1VVXZdKkSZx++uljv0CNVFXrQUYcvPP1EKmqpxfTr49xGKT9/f3lP+yt8cB/2Hvlc/PNN/Oa17ym12WstIa7/kmurqr+oX2X+q3dJH1JfpnkdGABcHuSrya5McmFSV7Q9Ns+yXVJrgM+tJgxZyT5bpILktyW5HNd2xZ0Lb8jycxmeWaSrySZneSOJNOTnJrk5oV9RjjWoUkG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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "The `AveBedrms` have the higher coefficient. However, we can’t compare the magnitude of these coefficients directly, since they are not scaled. Indeed, `Population` is an integer which can be thousands, while `AveBedrms` is around 4 and `Latitude` is in degree.\n", "\n", "So the Population coefficient is expressed in `“100k$/habitant”` while the `AveBedrms` is expressed in `“100k$/nb of bedrooms”` and the Latitude coefficient in `“100k$/degree”`. We see that changing population by one does not change the outcome, while as we go south (latitude increase) the price becomes cheaper. Also, adding a bedroom (keeping all other feature constant) shall rise the price of the house by `80k$`.\n", "\n", "So looking at the coefficient plot to gauge feature importance can be misleading as some of them vary on a small scale, while others vary a lot more, several decades. So before any interpretation, we need to scale each column (removing the mean and scaling the variance to 1)." ], "metadata": { "id": "BEwY2u2PKrvR" } }, { "cell_type": "code", "source": [ "model = make_pipeline(StandardScaler(), RidgeCV())\n", "\n", "model.fit(X_train, y_train)\n", "\n", "print(f'model score on training data: {model.score(X_train, y_train)}')\n", "print(f'model score on testing data: {model.score(X_test, y_test)}')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hk5ebi7xKlJ0", "outputId": "e3182ee2-6c9c-4ddf-b935-a545c423df65" }, "execution_count": 65, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "model score on training data: 0.6048511948222112\n", "model score on testing data: 0.5863381274564599\n" ] } ] }, { "cell_type": "code", "source": [ "coefs = pd.DataFrame(\n", " model[1].coef_,\n", " columns=['Coefficients'], index=X_train.columns\n", ")\n", "\n", "coefs.plot(kind='barh', figsize=(9, 7))\n", "plt.title('Ridge model')\n", "plt.axvline(x=0, color='.5')\n", "plt.subplots_adjust(left=.3)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 444 }, "id": "8KjhPtSzLP3P", "outputId": "9288292a-4415-4585-c361-4c75afa51828" }, "execution_count": 66, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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N92UE088EYBjjjmGu+66i0mTJnH00Ufzm9/8hsmTJzNp0iS22morrrjiitaPkytSSdKQbrrpJnbYYYcXlH/nO99h1qxZ3HDDDTz44IPsuOOOTJ48mRtvvJE777yTq6++mqpin332Yfr06Zx88slcdNFFXHbZZay33nq8/vWv5wtf+AIXXHDB8/odGBjgsMMOY/r06WyyySY89NBDLzj33/3d3/Gxj32MXXfdlV/84hfsscce3HrrrQDcdtttXHbZZTz66KP86Z/+KR/84Ac5/vjjuemmmxasfr/4xS+yxx578MlPfpJ58+bx+OOPt36cDFJJ0mL52c9+xsEHH8wqq6zCBhtswJve9CauueYapk+fzo9//GO22247AObOncudd97J5MmTR9TvjBkzmDx58oL3b6677rovqHPJJZdwyy23LNj/wx/+wNy5cwHYe++9WWONNVhjjTVYf/31eeCBB17Qfscdd+R973sfTz/9NPvuuy+TJk1a7PkPZpBKkoa05ZZb8u1vf3vE9auKY489lg984ANLbUzPPvssM2bMYNy4cS84tsYaayzYXmWVVXjmmWdeUGfy5MlMnz6dCy+8kKlTp3LUUUfxnve8p9WYvEcqSRrSbrvtxlNPPcUpp5yyoGz27Nmss846nHPOOcybN4+BgQGmT5/OTjvtxB577MGpp566YIX4q1/9it/97ncjPt/OO+/M9OnTueeeewCGvLS7++6785WvfGXB/vxLtsNZe+21efTRRxfs33fffWywwQYcdthh/M3f/A3XXXfdiMc3nDGxIk3SB1xQVVv1eCiSNCb14m1FSTj//PM58sgjOeGEExg3bhx9fX18+ctfZu7cuWy77bYk4XOf+xwbbrghG264IbfeeitveMMbABg/fjxnnnkm66+//ojON3HiRE455RT2339/nn32WdZff30uvvji59U58cQT+fCHP8w222zDM888w+TJkzn55JOH7XPChAnssssubLXVVuy1115stdVWfP7zn2e11VZj/PjxnH766aN/gBqpqtadDNt55+MhUlXPLqJeH2MwSPv7+8s/7K2VxbRp05hx9xwu+uPmrfrxfaRLxq233srrXve6Xg9jpTXU45/k2qrqH1x3iV/aTdKX5PYkpwNzgbuSfD3JzUl+nORFTb0dktyQ5Abgw4voc2qS7yS5KMmdST7XdWxu1/Y7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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Now that the coefficients have been scaled, we can safely compare them. The median income feature, with longitude and latitude are the three variables that most influence the model.\n", "\n", "The plot above tells us about dependencies between a specific feature and the target when all other features remain constant, i.e., conditional dependencies. An increase of the `HouseAge` will induce an increase of the price when all other features remain constant. On the contrary, an increase of the average rooms will induce an decrease of the price when all other features remain constant." ], "metadata": { "id": "NehlVHi2LWHY" } }, { "cell_type": "markdown", "source": [ "We can check the coefficient variability through cross-validation: it is a form of data perturbation." ], "metadata": { "id": "ux2-205wLmSh" } }, { "cell_type": "code", "source": [ "cv_model = cross_validate(\n", " model, X_with_rnd_feat, y, cv=RepeatedKFold(n_splits=5, n_repeats=5),\n", " return_estimator=True, n_jobs=2\n", ")\n", "coefs = pd.DataFrame(\n", " [model[1].coef_\n", " for model in cv_model['estimator']],\n", " columns=X_with_rnd_feat.columns\n", ")\n", "plt.figure(figsize=(9, 7))\n", "sns.boxplot(data=coefs, orient='h', color='cyan', saturation=0.5)\n", "plt.axvline(x=0, color='.5')\n", "plt.xlabel('Coefficient importance')\n", "plt.title('Coefficient importance and its variability')\n", "plt.subplots_adjust(left=.3)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 458 }, "id": "deiQJiPNLR1_", "outputId": "e4238395-ff2a-4a94-a018-ba1fea30d4e4" }, "execution_count": 64, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Now if we want to select the four features which are the most important according to the coefficients. The `SelectFromModel` is meant just for that. `SelectFromModel` accepts a `threshold` parameter and will select the features whose importance (defined by the coefficients) are above this threshold." ], "metadata": { "id": "wL8szAkwMLto" } }, { "cell_type": "code", "source": [ "model" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "T8C_GOhgM1L4", "outputId": "6512cc7e-be65-4d42-ee28-52c26e00aadb" }, "execution_count": 67, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Pipeline(steps=[('standardscaler', StandardScaler()),\n", " ('ridgecv', RidgeCV(alphas=array([ 0.1, 1. , 10. ])))])" ] }, "metadata": {}, "execution_count": 67 } ] }, { "cell_type": "code", "source": [ "importance = np.abs(model[1].coef_)\n", "threshold = np.sort(importance)[-5] + 0.01" ], "metadata": { "id": "JrrrUqq4Lo2S" }, "execution_count": 68, "outputs": [] }, { "cell_type": "code", "source": [ "feature_names = np.array(X.columns)\n", "sfm = SelectFromModel(model[1], threshold=threshold).fit(X, y)\n", "print(f\"Features selected by SelectFromModel: {feature_names[sfm.get_support()]}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "nqtT14UoM4OS", "outputId": "603fb5b4-c3b5-4175-9079-8c8370c9f942" }, "execution_count": 72, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Features selected by SelectFromModel: ['MedInc' 'AveBedrms' 'Latitude' 'Longitude']\n" ] } ] }, { "cell_type": "markdown", "source": [ "#### Linear models with sparse coefficients (Lasso)" ], "metadata": { "id": "25OIEBwCNZUw" } }, { "cell_type": "markdown", "source": [ "In it important to keep in mind that the associations extracted depend on the model. To illustrate this point we consider a Lasso model, that performs feature selection with a L1 penalty. Let us fit a Lasso model with a strong regularization parameters alpha" ], "metadata": { "id": "vHsNnqoQNhsT" } }, { "cell_type": "code", "source": [ "model = make_pipeline(StandardScaler(), Lasso(alpha=.015))\n", "\n", "model.fit(X_train, y_train)\n", "\n", "print(f'model score on training data: {model.score(X_train, y_train)}')\n", "print(f'model score on testing data: {model.score(X_test, y_test)}')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "LWLjWFkmM9LL", "outputId": "e3de2fb1-32ed-4ab2-bb9d-8fd673368fb7" }, "execution_count": 73, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "model score on training data: 0.5933235371761756\n", "model score on testing data: 0.5673786563118284\n" ] } ] }, { "cell_type": "code", "source": [ "coefs = pd.DataFrame(\n", " model[1].coef_,\n", " columns=['Coefficients'], index=X_train.columns\n", ")\n", "\n", "coefs.plot(kind='barh', figsize=(9, 7))\n", "plt.title('Lasso model, strong regularization')\n", "plt.axvline(x=0, color='.5')\n", "plt.subplots_adjust(left=.3)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 444 }, "id": "LTDzbcc6NlYv", "outputId": "3f8a1cd1-2eab-4560-c2b2-394f0a196389" }, "execution_count": 74, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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r72Wo446aoXOCXDnnXfy3//937zrXe9a4WNXhGEqSRpWVbHvvvtyyCGHcMoppwBw5ZVXctttt61wmB5//PGce+65bLbZZsybNw+A+fPnA3DAAQcs99h99tmHffbZZww96ITp8ccfv9LD1GleSdKwzjvvPFZffXUOP/zwR9dtv/327L777nzwgx9km222Ydttt+XUU099dPsnP/lJdt55Z7bbbjs+9rGPAXD44Ydz8803s9dee3Hsscfy5je/mUsvvZQZM2Zw0003MWvWrEc/uvWss85ixx13ZPvtt+cVr3gF0PkYzPe85z0ADA4Osv/++7Pzzjuz8847c9FFFwFw9NFH87a3vY1Zs2axxRZbcNxxxwFw1FFHcdNNNzFjxgw++MEP8pvf/IaZM2cyY8YMttlmGy644IJxea4cmUqShnX11Vez0047/dn673znO8yfP58rr7yS22+/nZ133pmZM2dy1VVXceONN3LJJZdQVeyzzz7MnTuXE044gbPOOovzzjuPDTfckBe+8IV86lOf4owzznhMu4ODgxx66KHMnTuXZz3rWfz+97//s3O///3v5wMf+AC77747v/jFL3j1q1/NddddB8D111/Peeedx913383znvc83vnOd3LMMcdw9dVXPzoK/vSnP82rX/1qPvKRj/Dwww9z7733jstzZZhKklbIhRdeyEEHHcRqq63GxhtvzEtf+lIuvfRS5s6dy9lnn80OO+wAwJIlS7jxxhuZOXPmqNqdN28eM2fOfPT9nRtssMGf7XPuuedy7bXXPvr4D3/4A0uWLAFg7733Zs0112TNNddko4024rbbbvuz43feeWfe9ra38eCDD/L617+eGTNmrHD/h2OYSpKGtfXWW/Otb31r1PtXFR/+8Id5xzvesdJqeuSRR5g3bx5Tp079s21rrrnmo8urrbYaDz300J/tM3PmTObOncuZZ57J7NmzOfLII3nLW97Sui6vmUqShvXyl7+cBx54gBNPPPHRdQsWLGD99dfn1FNP5eGHH2ZwcJC5c+eyyy678OpXv5qTTjrp0ZHir371K373u9+N+ny77rorc+fOZeHChQDDTvPusccefP7zn3/08dLp22VZb731uPvuux99fOutt7Lxxhtz6KGH8td//ddcfvnlo65veSbFyDRJH3BGVW3T41IkaVLqxVuQknD66adzxBFHcOyx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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Here the model score is a bit lower, because of the strong regularization. However, it has zeroed out 3 coefficients, selecting a small number of variables to make its prediction." ], "metadata": { "id": "eCstXIgINwgh" } }, { "cell_type": "markdown", "source": [ "#### Randomforest with feature importance" ], "metadata": { "id": "9xppGbQ4N1Zw" } }, { "cell_type": "markdown", "source": [ "On some algorithms, there are some feature importance methods, inherently built within the model. It is the case in RandomForest models. Let’s investigate the built-in feature_importances_ attribute." ], "metadata": { "id": "EZi4Yk_hN935" } }, { "cell_type": "code", "source": [ "model = RandomForestRegressor()\n", "\n", "model.fit(X_train, y_train)\n", "\n", "print(f'model score on training data: {model.score(X_train, y_train)}')\n", "print(f'model score on testing data: {model.score(X_test, y_test)}')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0BZSUHpLNn5X", "outputId": "4b1440c3-908d-4d09-9138-71862efa6378" }, "execution_count": 75, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "model score on training data: 0.9796271614609334\n", "model score on testing data: 0.8457060700865664\n" ] } ] }, { "cell_type": "code", "source": [ "importances = model.feature_importances_\n", "indices = np.argsort(importances)\n", "\n", "fig, ax = plt.subplots()\n", "ax.barh(range(len(importances)), importances[indices])\n", "ax.set_yticks(range(len(importances)))\n", "_ = ax.set_yticklabels(np.array(X_train.columns)[indices])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "id": "xBAIYWWFOCcy", "outputId": "dd7b532f-70d7-4f43-8958-2427e1cc7ff7" }, "execution_count": 76, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Median income is still the most important feature. It also has a small bias toward high cardinality features, such as the noisy feature `rnd_num`, which are here predicted having `0.07` importance, more than `HouseAge` (which has low cardinality)." ], "metadata": { "id": "XbR4LmgUOLUA" } }, { "cell_type": "markdown", "source": [ "#### Feature importance by permutation" ], "metadata": { "id": "NiOjvqYDOVhR" } }, { "cell_type": "markdown", "source": [ "We introduce here a new technique to evaluate the feature importance of any given fitted model. It basically shuffles a feature and sees how the model changes its prediction. Thus, the change in prediction will correspond to the feature importance." ], "metadata": { "id": "HGPNltcJOYlo" } }, { "cell_type": "code", "source": [ "# Any model could be used here\n", "\n", "\n", "model = RandomForestRegressor()\n", "model.fit(X_train, y_train)\n", "\n", "print(f'model score on training data: {model.score(X_train, y_train)}')\n", "print(f'model score on testing data: {model.score(X_test, y_test)}')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "W20bLMRSOJJq", "outputId": "478b016a-fc0f-4e4a-93a5-d1ff38504db5" }, "execution_count": 77, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "model score on training data: 0.9795237577232964\n", "model score on testing data: 0.8467958072484991\n" ] } ] }, { "cell_type": "code", "source": [ "r = permutation_importance(model, X_test, y_test, n_repeats=30, random_state=42)" ], "metadata": { "id": "5J9M7E1vOmMN" }, "execution_count": 79, "outputs": [] }, { "cell_type": "code", "source": [ "fig, ax = plt.subplots()\n", "\n", "indices = r.importances_mean.argsort()\n", "plt.barh(range(len(indices)), r.importances_mean[indices], xerr=r.importances_std[indices])\n", "\n", "ax.set_yticks(range(len(indices)))\n", "_ = ax.set_yticklabels(np.array(X_train.columns)[indices])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "id": "gNU5FFTsPToC", "outputId": "098861ca-aedf-4d99-902a-c9cb205b0eaa" }, "execution_count": 80, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "We see again that the feature `MedInc`, Latitude and Longitude are very important for the model. We note that our random variable `rnd_num` is now very less important than latitude. Indeed, the feature importance built-in in `RandomForest` has bias for continuous data, such as `AveOccup` and `rnd_num`." ], "metadata": { "id": "ZSzzW-1OQL0Y" } }, { "cell_type": "markdown", "source": [ "#### Feature rejection using Boruta" ], "metadata": { "id": "I1T6QCk1QpF_" } }, { "cell_type": "code", "source": [ "# define Boruta feature selection method\n", "feat_selector = BorutaPy(model, n_estimators='auto', verbose=2, random_state=1)" ], "metadata": { "id": "El1azRgZQohX" }, "execution_count": 85, "outputs": [] }, { "cell_type": "code", "source": [ "# find all relevant features \n", "feat_selector.fit(X_train.values, y_train.values)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "zlVL9xjvP3de", "outputId": "ba1dfec2-31cd-4947-807d-820b967ebdba" }, "execution_count": 89, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Iteration: \t1 / 100\n", "Confirmed: \t0\n", "Tentative: \t10\n", "Rejected: \t0\n", "Iteration: \t2 / 100\n", "Confirmed: \t0\n", "Tentative: \t10\n", "Rejected: \t0\n", "Iteration: \t3 / 100\n", "Confirmed: \t0\n", "Tentative: \t10\n", "Rejected: \t0\n", "Iteration: \t4 / 100\n", "Confirmed: \t0\n", "Tentative: \t10\n", "Rejected: \t0\n", "Iteration: \t5 / 100\n", "Confirmed: \t0\n", "Tentative: \t10\n", "Rejected: \t0\n", "Iteration: \t6 / 100\n", "Confirmed: \t0\n", "Tentative: \t10\n", "Rejected: \t0\n", "Iteration: \t7 / 100\n", "Confirmed: \t0\n", "Tentative: \t10\n", "Rejected: \t0\n", "Iteration: \t8 / 100\n", "Confirmed: \t9\n", "Tentative: \t0\n", "Rejected: \t1\n", "\n", "\n", "BorutaPy finished running.\n", "\n", "Iteration: \t9 / 100\n", "Confirmed: \t9\n", "Tentative: \t0\n", "Rejected: \t1\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "BorutaPy(estimator=RandomForestRegressor(n_estimators=44,\n", " random_state=RandomState(MT19937) at 0x7F0639E28E20),\n", " n_estimators='auto',\n", " random_state=RandomState(MT19937) at 0x7F0639E28E20, verbose=2)" ] }, "metadata": {}, "execution_count": 89 } ] }, { "cell_type": "code", "source": [ "# check selected features \n", "np.array(X_train.columns)[feat_selector.support_]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "V5aQGB1cRWYY", "outputId": "fdfd1412-4330-41fb-8288-558ac0186f1b" }, "execution_count": 92, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array(['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population',\n", " 'AveOccup', 'Latitude', 'Longitude', 'rnd_num'], dtype=object)" ] }, "metadata": {}, "execution_count": 92 } ] }, { "cell_type": "code", "source": [ "# check ranking of features\n", "feat_selector.ranking_" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "WaQ2itMTRX99", "outputId": "3b0688dc-ff55-4104-d169-154a8a71a7d8" }, "execution_count": 91, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([1, 1, 1, 1, 1, 1, 1, 1, 2, 1])" ] }, "metadata": {}, "execution_count": 91 } ] }, { "cell_type": "code", "source": [ "# call transform() on X to filter it down to selected features\n", "X_filtered = feat_selector.transform(X_train.values)\n", "X_filtered.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "UGaMazEIRb74", "outputId": "1c97eacc-b0c8-465f-a603-9f526d9f559b" }, "execution_count": 95, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(7500, 9)" ] }, "metadata": {}, "execution_count": 95 } ] }, { "cell_type": "markdown", "source": [ "## Dimensional reduction" ], "metadata": { "id": "tILVdZOoUA8f" } }, { "cell_type": "markdown", "source": [ "We now looked at our model-based method for feature engineering: principal component analysis (PCA). You could think of PCA as a partitioning of the variation in the data. PCA is a great tool to help you discover important relationships in the data and can also be used to create more informative features." ], "metadata": { "id": "GOuAQ5oUUPTP" } }, { "cell_type": "markdown", "source": [ "There are two ways you could use PCA for feature engineering.\n", "\n", "The first way is to use it as a descriptive technique. Since the components tell you about the variation, **you could compute the MI scores for the components and see what kind of variation is most predictive of your target.** That could give you ideas for kinds of features to create -- a product of `'Height'` and `'Diameter'` if `'Size'` is important, say, or a ratio of `'Height'` and `'Diameter'` if `Shape` is important. You could even try clustering on one or more of the high-scoring components.\n", "\n", "The second way is to use the components themselves as features. Because the components expose the variational structure of the data directly, **they can often be more informative than the original features.** Here are some use-cases:\n", "- **Dimensionality reduction**: When your features are highly redundant (*multicollinear*, specifically), PCA will partition out the redundancy into one or more near-zero variance components, which you can then drop since they will contain little or no information.\n", "- **Anomaly detection**: Unusual variation, not apparent from the original features, will often show up in the low-variance components. These components could be highly informative in an anomaly or outlier detection task.\n", "- **Noise reduction**: A collection of sensor readings will often share some common background noise. PCA can sometimes collect the (informative) signal into a smaller number of features while leaving the noise alone, thus boosting the signal-to-noise ratio.\n", "- **Decorrelation**: Some ML algorithms struggle with highly-correlated features. PCA transforms correlated features into uncorrelated components, which could be easier for your algorithm to work with." ], "metadata": { "id": "x1CYu0lXU4vG" } }, { "cell_type": "markdown", "source": [ "PCA basically gives you direct access to the correlational structure of your data. You'll no doubt come up with applications of your own!" ], "metadata": { "id": "FBYABylCVU9_" } }, { "cell_type": "code", "source": [ "def plot_variance(pca, width=8, dpi=100):\n", " # Create figure\n", " fig, axs = plt.subplots(1, 2)\n", " n = pca.n_components_\n", " grid = np.arange(1, n + 1)\n", " # Explained variance\n", " evr = pca.explained_variance_ratio_\n", " axs[0].bar(grid, evr)\n", " axs[0].set(\n", " xlabel=\"Component\", title=\"% Explained Variance\", ylim=(0.0, 1.0)\n", " )\n", " # Cumulative Variance\n", " cv = np.cumsum(evr)\n", " axs[1].plot(np.r_[0, grid], np.r_[0, cv], \"o-\")\n", " axs[1].set(\n", " xlabel=\"Component\", title=\"% Cumulative Variance\", ylim=(0.0, 1.0)\n", " )\n", " # Set up figure\n", " fig.set(figwidth=8, dpi=100)\n", " return axs" ], "metadata": { "id": "y4WY_DqCUEsx" }, "execution_count": 97, "outputs": [] }, { "cell_type": "code", "source": [ "df = pd.read_csv(\"autos.csv\")\n", "df.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 352 }, "id": "KY-9l7p1VtRM", "outputId": "d3ba83cc-7903-4504-e080-6393ab5e91a5" }, "execution_count": 98, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " symboling make fuel_type aspiration num_of_doors body_style \\\n", "0 3 alfa-romero gas std 2 convertible \n", "1 3 alfa-romero gas std 2 convertible \n", "2 1 alfa-romero gas std 2 hatchback \n", "3 2 audi gas std 4 sedan \n", "4 2 audi gas std 4 sedan \n", "\n", " drive_wheels engine_location wheel_base length ... engine_size \\\n", "0 rwd front 88.6 168.8 ... 130 \n", "1 rwd front 88.6 168.8 ... 130 \n", "2 rwd front 94.5 171.2 ... 152 \n", "3 fwd front 99.8 176.6 ... 109 \n", "4 4wd front 99.4 176.6 ... 136 \n", "\n", " fuel_system bore stroke compression_ratio horsepower peak_rpm city_mpg \\\n", "0 mpfi 3.47 2.68 9 111 5000 21 \n", "1 mpfi 3.47 2.68 9 111 5000 21 \n", "2 mpfi 2.68 3.47 9 154 5000 19 \n", "3 mpfi 3.19 3.40 10 102 5500 24 \n", "4 mpfi 3.19 3.40 8 115 5500 18 \n", "\n", " highway_mpg price \n", "0 27 13495 \n", "1 27 16500 \n", "2 26 16500 \n", "3 30 13950 \n", "4 22 17450 \n", "\n", "[5 rows x 25 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
symbolingmakefuel_typeaspirationnum_of_doorsbody_styledrive_wheelsengine_locationwheel_baselength...engine_sizefuel_systemborestrokecompression_ratiohorsepowerpeak_rpmcity_mpghighway_mpgprice
03alfa-romerogasstd2convertiblerwdfront88.6168.8...130mpfi3.472.6891115000212713495
13alfa-romerogasstd2convertiblerwdfront88.6168.8...130mpfi3.472.6891115000212716500
21alfa-romerogasstd2hatchbackrwdfront94.5171.2...152mpfi2.683.4791545000192616500
32audigasstd4sedanfwdfront99.8176.6...109mpfi3.193.40101025500243013950
42audigasstd4sedan4wdfront99.4176.6...136mpfi3.193.4081155500182217450
\n", "

5 rows × 25 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 98 } ] }, { "cell_type": "markdown", "source": [ "We've selected four features that cover a range of properties. Each of these features also has a high MI score with the target, `price`. We'll standardize the data since these features aren't naturally on the same scale." ], "metadata": { "id": "PFIztg2qV1oA" } }, { "cell_type": "code", "source": [ "features = [\"highway_mpg\", \"engine_size\", \"horsepower\", \"curb_weight\"]\n", "\n", "X = df.copy()\n", "y = X.pop('price')\n", "X = X.loc[:, features]\n", "\n", "# Standardize\n", "X_scaled = (X - X.mean(axis=0)) / X.std(axis=0)" ], "metadata": { "id": "idZp66RfVwXt" }, "execution_count": 99, "outputs": [] }, { "cell_type": "markdown", "source": [ "Now we can fit scikit-learn's `PCA` estimator and create the principal components. You can see here the first few rows of the transformed dataset." ], "metadata": { "id": "c3wTqeTBV4tg" } }, { "cell_type": "code", "source": [ "# Create principal components\n", "pca = PCA()\n", "X_pca = pca.fit_transform(X_scaled)\n", "\n", "# Convert to dataframe\n", "component_names = [f\"PC{i+1}\" for i in range(X_pca.shape[1])]\n", "X_pca = pd.DataFrame(X_pca, columns=component_names)\n", "\n", "X_pca.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "6JTcIZ7DV3J-", "outputId": "c1e85fe9-e901-4a0a-9fc4-7786feb38168" }, "execution_count": 100, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " PC1 PC2 PC3 PC4\n", "0 0.382486 -0.400222 0.124122 0.169539\n", "1 0.382486 -0.400222 0.124122 0.169539\n", "2 1.550890 -0.107175 0.598361 -0.256081\n", "3 -0.408859 -0.425947 0.243335 0.013920\n", "4 1.132749 -0.814565 -0.202885 0.224138" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PC1PC2PC3PC4
00.382486-0.4002220.1241220.169539
10.382486-0.4002220.1241220.169539
21.550890-0.1071750.598361-0.256081
3-0.408859-0.4259470.2433350.013920
41.132749-0.814565-0.2028850.224138
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 100 } ] }, { "cell_type": "markdown", "source": [ "After fitting, the `PCA` instance contains the loadings in its `components_` attribute. We'll wrap the loadings up in a dataframe." ], "metadata": { "id": "UEnzS398V-Cv" } }, { "cell_type": "code", "source": [ "loadings = pd.DataFrame(\n", " pca.components_.T, # transpose the matrix of loadings\n", " columns=component_names, # so the columns are the principal components\n", " index=X.columns, # and the rows are the original features\n", ")\n", "loadings" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 175 }, "id": "78T7AguDV7aO", "outputId": "c2d11267-3440-4edb-9c55-1a8fa5837784" }, "execution_count": 101, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " PC1 PC2 PC3 PC4\n", "highway_mpg -0.492347 0.770892 0.070142 -0.397996\n", "engine_size 0.503859 0.626709 0.019960 0.594107\n", "horsepower 0.500448 0.013788 0.731093 -0.463534\n", "curb_weight 0.503262 0.113008 -0.678369 -0.523232" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PC1PC2PC3PC4
highway_mpg-0.4923470.7708920.070142-0.397996
engine_size0.5038590.6267090.0199600.594107
horsepower0.5004480.0137880.731093-0.463534
curb_weight0.5032620.113008-0.678369-0.523232
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 101 } ] }, { "cell_type": "markdown", "source": [ "Recall that the signs and magnitudes of a component's loadings tell us what kind of variation it's captured. The first component (`PC1`) shows a contrast between large, powerful vehicles with poor gas milage, and smaller, more economical vehicles with good gas milage. We might call this the \"Luxury/Economy\" axis. The next figure shows that our four chosen features mostly vary along the Luxury/Economy axis." ], "metadata": { "id": "oAx9iIwKWKrv" } }, { "cell_type": "code", "source": [ "# Look at explained variance\n", "plot_variance(pca)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 456 }, "id": "rEHb4338WIUA", "outputId": "d8d16d16-af1c-45a9-f70d-09b382af4ff5" }, "execution_count": 102, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([,\n", " ],\n", " dtype=object)" ] }, "metadata": {}, "execution_count": 102 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Let's also look at the MI scores of the components. Not surprisingly, `PC1` is highly informative, though the remaining components, despite their small variance, still have a significant relationship with `price`. Examining those components could be worthwhile to find relationships not captured by the main Luxury/Economy axis." ], "metadata": { "id": "tEdlKVpvWRo2" } }, { "cell_type": "code", "source": [ "mi_scores = make_mi_scores(X_pca, y, discrete_features=False)\n", "mi_scores" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "L_EhGRNuWPfg", "outputId": "ba784c35-4b6b-42d9-e4a9-7d3a0b052ed8" }, "execution_count": 103, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "PC1 1.013190\n", "PC2 0.379271\n", "PC3 0.306780\n", "PC4 0.204163\n", "Name: MI Scores, dtype: float64" ] }, "metadata": {}, "execution_count": 103 } ] }, { "cell_type": "markdown", "source": [ "The third component shows a contrast between `horsepower` and `curb_weight` -- sports cars vs. wagons, it seems." ], "metadata": { "id": "XX88JTAsWY9f" } }, { "cell_type": "code", "source": [ "# Show dataframe sorted by PC3\n", "idx = X_pca[\"PC3\"].sort_values(ascending=False).index\n", "cols = [\"make\", \"body_style\", \"horsepower\", \"curb_weight\"]\n", "df.loc[idx, cols]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "id": "NhtyKfvHWUNY", "outputId": "6ddde196-0e17-46cd-962c-e0fb0db78116" }, "execution_count": 104, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " make body_style horsepower curb_weight\n", "118 porsche hardtop 207 2756\n", "117 porsche hardtop 207 2756\n", "119 porsche convertible 207 2800\n", "45 jaguar sedan 262 3950\n", "96 nissan hatchback 200 3139\n", ".. ... ... ... ...\n", "59 mercedes-benz wagon 123 3750\n", "61 mercedes-benz sedan 123 3770\n", "101 peugot wagon 95 3430\n", "105 peugot wagon 95 3485\n", "143 toyota wagon 62 3110\n", "\n", "[193 rows x 4 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
makebody_stylehorsepowercurb_weight
118porschehardtop2072756
117porschehardtop2072756
119porscheconvertible2072800
45jaguarsedan2623950
96nissanhatchback2003139
...............
59mercedes-benzwagon1233750
61mercedes-benzsedan1233770
101peugotwagon953430
105peugotwagon953485
143toyotawagon623110
\n", "

193 rows × 4 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 104 } ] }, { "cell_type": "markdown", "source": [ "To express this contrast, let's create a new ratio feature:" ], "metadata": { "id": "kMd55KXSWdsQ" } }, { "cell_type": "code", "source": [ "df[\"sports_or_wagon\"] = X.curb_weight / X.horsepower\n", "sns.regplot(x=\"sports_or_wagon\", y='price', data=df, order=2);" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 280 }, "id": "xY-2Px6jWaMZ", "outputId": "72bbc399-144c-4db0-ffc6-ddf09957299e" }, "execution_count": 105, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "## Manifold learning" ], "metadata": { "id": "hXbbcntiYDL2" } }, { "cell_type": "markdown", "source": [ "#### t-SNE" ], "metadata": { "id": "-6QWgk8taZK1" } }, { "cell_type": "code", "source": [ "digits = load_digits()" ], "metadata": { "id": "Gs1pLCRYWe9x" }, "execution_count": 111, "outputs": [] }, { "cell_type": "code", "source": [ "X = digits.images.reshape(-1, digits.images.shape[1]*digits.images.shape[2])\n", "X.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "p-Bk3gJxYG4E", "outputId": "4a75ff2a-fb10-459a-ece5-5b05a3515e4c" }, "execution_count": 112, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(1797, 64)" ] }, "metadata": {}, "execution_count": 112 } ] }, { "cell_type": "code", "source": [ "fig, ax_array = plt.subplots(5, 5)\n", "axes = ax_array.flatten()\n", "for i, ax in enumerate(axes):\n", " ax.imshow(digits.images[i], cmap='gray_r')\n", "plt.setp(axes, xticks=[], yticks=[], frame_on=False)\n", "plt.tight_layout(h_pad=0.5, w_pad=0.01)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 297 }, "id": "TdLBnz6tYKwF", "outputId": "fb0b1c55-ec19-4c49-8a2a-0d3ac581721e" }, "execution_count": 113, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "otsne = oTSNE(\n", " n_components=2,\n", " perplexity=30,\n", " initialization='pca', \n", " n_jobs=2,\n", " random_state=0,\n", " negative_gradient_method='auto', \n", " verbose=True,\n", ")" ], "metadata": { "id": "PBOWpizzYL6X" }, "execution_count": 114, "outputs": [] }, { "cell_type": "code", "source": [ "embedding = otsne.fit(X)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "os4KFGwKYVyF", "outputId": "357f45eb-60da-4ab7-9b25-0da15b954b26" }, "execution_count": 115, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "--------------------------------------------------------------------------------\n", "TSNE(n_jobs=2, random_state=0, verbose=True)\n", "--------------------------------------------------------------------------------\n", "===> Finding 90 nearest neighbors using Annoy approximate search using euclidean distance...\n", " --> Time elapsed: 0.92 seconds\n", "===> Calculating affinity matrix...\n", " --> Time elapsed: 0.11 seconds\n", "===> Calculating PCA-based initialization...\n", " --> Time elapsed: 0.02 seconds\n", "===> Running optimization with exaggeration=12.00, lr=200.00 for 250 iterations...\n", "Iteration 50, KL divergence 3.1044, 50 iterations in 0.5826 sec\n", "Iteration 100, KL divergence 2.7273, 50 iterations in 0.4728 sec\n", "Iteration 150, KL divergence 2.6609, 50 iterations in 0.4515 sec\n", "Iteration 200, KL divergence 2.6357, 50 iterations in 0.4789 sec\n", "Iteration 250, KL divergence 2.6227, 50 iterations in 0.4703 sec\n", " --> Time elapsed: 2.46 seconds\n", "===> Running optimization with exaggeration=1.00, lr=200.00 for 500 iterations...\n", "Iteration 50, KL divergence 1.2848, 50 iterations in 0.4899 sec\n", "Iteration 100, KL divergence 1.0173, 50 iterations in 0.4494 sec\n", "Iteration 150, KL divergence 0.9110, 50 iterations in 0.4788 sec\n", "Iteration 200, KL divergence 0.8550, 50 iterations in 0.4884 sec\n", "Iteration 250, KL divergence 0.8216, 50 iterations in 0.4819 sec\n", "Iteration 300, KL divergence 0.8011, 50 iterations in 0.4725 sec\n", "Iteration 350, KL divergence 0.7875, 50 iterations in 0.4661 sec\n", "Iteration 400, KL divergence 0.7790, 50 iterations in 0.4494 sec\n", "Iteration 450, KL divergence 0.7735, 50 iterations in 0.4512 sec\n", "Iteration 500, KL divergence 0.7699, 50 iterations in 0.4846 sec\n", " --> Time elapsed: 4.72 seconds\n" ] } ] }, { "cell_type": "code", "source": [ "plt.figure(figsize=(10, 8))\n", "plt.scatter(embedding[:, 0], embedding[:, 1], c=digits.target, cmap='Spectral', s=5)\n", "plt.gca().set_aspect('equal', 'datalim')\n", "plt.colorbar(boundaries=np.arange(11)-0.5).set_ticks(np.arange(10))\n", "plt.title('tSNE of the Digits dataset', fontsize=24)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 525 }, "id": "lsVmVDwUYXnu", "outputId": "9fc9155e-fcdd-4cf1-9537-caba4d0defe8" }, "execution_count": 116, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Text(0.5, 1.0, 'tSNE of the Digits dataset')" ] }, "metadata": {}, "execution_count": 116 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "#### UMAP" ], "metadata": { "id": "gJIG1-zcacTO" } }, { "cell_type": "markdown", "source": [ "UMAP is useful for generating visualisations, but if you want to make use of UMAP more generally for machine learning tasks it is important to be be able to train a model and then later pass new data to the model and have it transform that data into the learned space. For example if we use UMAP to learn a latent space and then train a classifier on data transformed into the latent space then the classifier is only useful for prediction if we can transform data for which we want a prediction into the latent space the classifier uses. " ], "metadata": { "id": "RFco1ZdqawkV" } }, { "cell_type": "code", "source": [ "X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, stratify=digits.target, random_state=42)" ], "metadata": { "id": "Xd89JSOraYKk" }, "execution_count": 117, "outputs": [] }, { "cell_type": "markdown", "source": [ "Now to get a benchmark idea of what we are looking at let’s train a couple of different classifiers and then see how well they score on the test set. For this example let’s try a support vector classifier and a KNN classifier." ], "metadata": { "id": "4MoEzfIIbGh_" } }, { "cell_type": "code", "source": [ "svc = SVC(gamma='auto').fit(X_train, y_train)\n", "knn = KNeighborsClassifier().fit(X_train, y_train)\n", "svc.score(X_test, y_test), knn.score(X_test, y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Iv6WyDIRa__H", "outputId": "817ceab4-11cd-44b4-de28-91f2a6d38c57" }, "execution_count": 121, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(0.62, 0.9844444444444445)" ] }, "metadata": {}, "execution_count": 121 } ] }, { "cell_type": "markdown", "source": [ "The goal now is to make use of UMAP as a preprocessing step that one could potentially fit into a pipeline. " ], "metadata": { "id": "Gx02oiB3b8nV" } }, { "cell_type": "code", "source": [ "trans = umap.UMAP(n_neighbors=5, random_state=42).fit(X_train)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SU4gnbqrbM9h", "outputId": "47e1956e-22ad-42cc-8906-69725e5f773f" }, "execution_count": 122, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.7/dist-packages/numba/np/ufunc/parallel.py:363: NumbaWarning: The TBB threading layer requires TBB version 2019.5 or later i.e., TBB_INTERFACE_VERSION >= 11005. Found TBB_INTERFACE_VERSION = 9107. The TBB threading layer is disabled.\n", " warnings.warn(problem)\n" ] } ] }, { "cell_type": "code", "source": [ "plt.figure(figsize=(10, 8))\n", "plt.scatter(trans.embedding_[:, 0], trans.embedding_[:, 1], c=y_train, cmap='Spectral', s=5)\n", "plt.gca().set_aspect('equal', 'datalim')\n", "plt.colorbar(boundaries=np.arange(11)-0.5).set_ticks(np.arange(10))\n", "plt.title('Umap of the Digits dataset', fontsize=24)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 525 }, "id": "vKQdE0_LcFMG", "outputId": "6e5d02a2-03c0-47e0-9291-829be88b7baf" }, "execution_count": 125, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Text(0.5, 1.0, 'Umap of the Digits dataset')" ] }, "metadata": {}, "execution_count": 125 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "This looks very promising! Most of the classes got very cleanly separated, and that gives us some hope that it could help with classifier performance. We can now train some new models (again an SVC and a KNN classifier) on the embedded training data. This looks exactly as before but now we pass it the embedded data. " ], "metadata": { "id": "NVGIGUqCcY-r" } }, { "cell_type": "code", "source": [ "svc = SVC(gamma='auto').fit(trans.embedding_, y_train)\n", "knn = KNeighborsClassifier().fit(trans.embedding_, y_train)" ], "metadata": { "id": "vaiBl0iycI3W" }, "execution_count": 131, "outputs": [] }, { "cell_type": "code", "source": [ "test_embedding = trans.transform(X_test)" ], "metadata": { "id": "g1_0phAhchBB" }, "execution_count": 128, "outputs": [] }, { "cell_type": "markdown", "source": [ "The next important question is what the transform did to our test data. In principle we have a new two dimensional representation of the test-set, and ideally this should be based on the existing embedding of the training set" ], "metadata": { "id": "yqqhDql-c0M9" } }, { "cell_type": "code", "source": [ "plt.figure(figsize=(10, 8))\n", "plt.scatter(test_embedding[:, 0], test_embedding[:, 1], c=y_test, cmap='Spectral', s=5)\n", "plt.gca().set_aspect('equal', 'datalim')\n", "plt.colorbar(boundaries=np.arange(11)-0.5).set_ticks(np.arange(10))\n", "plt.title('Umap of the Digits dataset', fontsize=24)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 525 }, "id": "gblKRyguczF7", "outputId": "b8edc9f9-21aa-4d60-b5c5-9260820bf94e" }, "execution_count": 130, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Text(0.5, 1.0, 'Umap of the Digits dataset')" ] }, "metadata": {}, "execution_count": 130 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "The results look like what we should expect; the test data has been embedded into two dimensions in exactly the locations we should expect (by class) given the embedding of the training data visualised above. This means we can now try out models that were trained on the embedded training data by handing them the newly transformed test set." ], "metadata": { "id": "LI9PGw5CdBFH" } }, { "cell_type": "code", "source": [ "svc.score(trans.transform(X_test), y_test), knn.score(trans.transform(X_test), y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "__808eXkc38M", "outputId": "960e5116-027b-4929-de7b-a88e6ef8337c" }, "execution_count": 132, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(0.9822222222222222, 0.9822222222222222)" ] }, "metadata": {}, "execution_count": 132 } ] }, { "cell_type": "markdown", "source": [ "The results are pretty good. While the accuracy of the KNN classifier did not improve there was not a lot of scope for improvement given the data. On the other hand the SVC has improved to have equal accuracy to the KNN classifier!\n", "\n", "For more interesting datasets the larger dimensional embedding might have been a significant gain – it is certainly worth exploring as one of the parameters in a grid search across a pipeline that includes UMAP.\n", "\n" ], "metadata": { "id": "1GN4oP95dSGe" } }, { "cell_type": "markdown", "source": [ "## Clustering" ], "metadata": { "id": "KqWbd1rSdync" } }, { "cell_type": "markdown", "source": [ "When used for feature engineering, we could attempt to discover groups of customers representing a market segment, for instance, or geographic areas that share similar weather patterns. Adding a feature of cluster labels can help machine learning models untangle complicated relationships of space or proximity." ], "metadata": { "id": "Gwnv4I6BesNV" } }, { "cell_type": "markdown", "source": [ "### Cluster Labels as a feature" ], "metadata": { "id": "WErqxr32gLk1" } }, { "cell_type": "markdown", "source": [ "Applied to a single real-valued feature, clustering acts like a traditional \"binning\" or \"discretization\" transform. On multiple features, it's like \"multi-dimensional binning\" (sometimes called vector quantization)." ], "metadata": { "id": "neHcqLiFgQfw" } }, { "cell_type": "markdown", "source": [ "It's important to remember that this Cluster feature is categorical. Here, it's shown with a label encoding (that is, as a sequence of integers) as a typical clustering algorithm would produce; depending on your model, a one-hot encoding may be more appropriate.\n", "\n", "The motivating idea **for adding cluster labels is that the clusters will break up complicated relationships across features into simpler chunks**. Our model can then just learn the simpler chunks one-by-one instead having to learn the complicated whole all at once. It's a \"divide and conquer\" strategy." ], "metadata": { "id": "igCdboqEgZGm" } }, { "cell_type": "markdown", "source": [ "As spatial features, [*California Housing*](https://www.kaggle.com/camnugent/california-housing-prices)'s `'Latitude'` and `'Longitude'` make natural candidates for k-means clustering. In this example we'll cluster these with `'MedInc'` (median income) to create economic segments in different regions of California." ], "metadata": { "id": "rxryA26wfL5-" } }, { "cell_type": "markdown", "source": [ "Since k-means clustering is sensitive to scale, it can be a good idea rescale or normalize data with extreme values. Our features are already roughly on the same scale, so we'll leave them as-is." ], "metadata": { "id": "4WNdYtx3fHYl" } }, { "cell_type": "code", "source": [ "df = fetch_california_housing(as_frame=True)['frame']" ], "metadata": { "id": "mfv9WpC_dGs9" }, "execution_count": 136, "outputs": [] }, { "cell_type": "code", "source": [ "X = df.loc[:, [\"MedInc\", \"Latitude\", \"Longitude\"]]\n", "X.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "n-kpl0jAfTF7", "outputId": "665d6557-c7d7-452f-956a-d5a9210dc570" }, "execution_count": 138, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " MedInc Latitude Longitude\n", "0 8.3252 37.88 -122.23\n", "1 8.3014 37.86 -122.22\n", "2 7.2574 37.85 -122.24\n", "3 5.6431 37.85 -122.25\n", "4 3.8462 37.85 -122.25" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MedIncLatitudeLongitude
08.325237.88-122.23
18.301437.86-122.22
27.257437.85-122.24
35.643137.85-122.25
43.846237.85-122.25
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 138 } ] }, { "cell_type": "code", "source": [ "# Create cluster feature\n", "kmeans = KMeans(n_clusters=6)\n", "X[\"Cluster\"] = kmeans.fit_predict(X)\n", "X[\"Cluster\"] = X[\"Cluster\"].astype(\"category\")\n", "\n", "X.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "iavDcVrRfUzD", "outputId": "2873b3a9-478c-4b68-b458-202b72c729e4" }, "execution_count": 141, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " MedInc Latitude Longitude Cluster\n", "0 8.3252 37.88 -122.23 0\n", "1 8.3014 37.86 -122.22 0\n", "2 7.2574 37.85 -122.24 0\n", "3 5.6431 37.85 -122.25 0\n", "4 3.8462 37.85 -122.25 3" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MedIncLatitudeLongitudeCluster
08.325237.88-122.230
18.301437.86-122.220
27.257437.85-122.240
35.643137.85-122.250
43.846237.85-122.253
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 141 } ] }, { "cell_type": "markdown", "source": [ "Notice the differnece between `predict` and `transform` in the KMeans. `predict` will predict the closest cluster each sample in X belongs to. `transform` will transform data to a cluster-distance space where each dimension is the distance to the cluster centers.\n" ], "metadata": { "id": "vtsRG70AguME" } }, { "cell_type": "markdown", "source": [ "Now let's look at a couple plots to see how effective this was. First, a scatter plot that shows the geographic distribution of the clusters. It seems like the algorithm has created separate segments for higher-income areas on the coasts." ], "metadata": { "id": "eUmP_ZxCflXO" } }, { "cell_type": "code", "source": [ "sns.relplot(\n", " x=\"Longitude\", y=\"Latitude\", hue=\"Cluster\", data=X, height=6,\n", ");" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 441 }, "id": "6iwt9GcFfgmT", "outputId": "dbe380ba-7855-4964-825c-4f0f1790673e" }, "execution_count": 142, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "The target in this dataset is `MedHouseVal` (median house value). These box-plots show the distribution of the target within each cluster. If the clustering is informative, these distributions should, for the most part, separate across `MedHouseVal`, which is indeed what we see." ], "metadata": { "id": "J_w0SDVRfsDP" } }, { "cell_type": "code", "source": [ "X[\"MedHouseVal\"] = df[\"MedHouseVal\"]\n", "sns.catplot(x=\"MedHouseVal\", y=\"Cluster\", data=X, kind=\"boxen\", height=6);" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 441 }, "id": "BhTEVdW2fo3m", "outputId": "42fbcb32-f26e-4d74-c420-6da76ea85e70" }, "execution_count": 143, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "### Cluster distance as a feature" ], "metadata": { "id": "hLGtkXQ0h_Fz" } }, { "cell_type": "code", "source": [ "X_digits, y_digits = load_digits(return_X_y=True)\n", "X_train, X_test, y_train, y_test = train_test_split(X_digits, y_digits, random_state=42)" ], "metadata": { "id": "hWGVLhQ0iXFs" }, "execution_count": 144, "outputs": [] }, { "cell_type": "markdown", "source": [ "Now let's fit a Logistic Regression model and evaluate it on the test set:" ], "metadata": { "id": "RzK45mJ0ifGF" } }, { "cell_type": "code", "source": [ "log_reg = LogisticRegression(multi_class=\"ovr\", solver=\"lbfgs\", max_iter=5000, random_state=42)\n", "log_reg.fit(X_train, y_train)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GWYzRRBRidDF", "outputId": "f93ff00f-3d10-48dc-862a-38392bf62cce" }, "execution_count": 147, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "LogisticRegression(max_iter=5000, multi_class='ovr', random_state=42)" ] }, "metadata": {}, "execution_count": 147 } ] }, { "cell_type": "code", "source": [ "log_reg_score = log_reg.score(X_test, y_test)\n", "log_reg_score" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "f-VVacUdik0W", "outputId": "d3bf3fed-a304-43b7-c28e-553a89ef5628" }, "execution_count": 148, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.9688888888888889" ] }, "metadata": {}, "execution_count": 148 } ] }, { "cell_type": "markdown", "source": [ "Okay, that's our baseline: 96.89% accuracy. Let's see if we can do better by using K-Means as a preprocessing step. **We will create a pipeline that will first cluster the training set into 50 clusters and replace the images with their distances to the 50 clusters**, then apply a logistic regression model:" ], "metadata": { "id": "MLbjHeZ6iqJl" } }, { "cell_type": "code", "source": [ "pipeline = Pipeline([\n", " (\"kmeans\", KMeans(n_clusters=50, random_state=42)),\n", " (\"log_reg\", LogisticRegression(multi_class=\"ovr\", solver=\"lbfgs\", max_iter=5000, random_state=42)),\n", "])\n", "pipeline.fit(X_train, y_train)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5WPkttz6iv0V", "outputId": "da49d07d-ce4d-4eda-d983-d83b0c7af52d" }, "execution_count": 153, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Pipeline(steps=[('kmeans', KMeans(n_clusters=50, random_state=42)),\n", " ('log_reg',\n", " LogisticRegression(max_iter=5000, multi_class='ovr',\n", " random_state=42))])" ] }, "metadata": {}, "execution_count": 153 } ] }, { "cell_type": "code", "source": [ "pipeline_score = pipeline.score(X_test, y_test)\n", "pipeline_score" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "pamadM2-jJsl", "outputId": "57384f0f-fa7a-4f00-fb66-eabef8511313" }, "execution_count": 154, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.9777777777777777" ] }, "metadata": {}, "execution_count": 154 } ] }, { "cell_type": "markdown", "source": [ "How much did the error rate drop?" ], "metadata": { "id": "G9o8gEHBjU5l" } }, { "cell_type": "code", "source": [ "1 - (1 - pipeline_score) / (1 - log_reg_score)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "IH5gTeDgjS9m", "outputId": "16a6eeca-4644-484b-bdbe-eb229db5195f" }, "execution_count": 155, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.28571428571428414" ] }, "metadata": {}, "execution_count": 155 } ] }, { "cell_type": "markdown", "source": [ "How about that? We reduced the error rate by over 28%! But we chose the number of clusters k completely arbitrarily, we can surely do better. Since K-Means is just a preprocessing step in a classification pipeline, finding a good value for k is the best value of k is simply the one that results in the best classification performance." ], "metadata": { "id": "ZGJUnrTQjSFd" } }, { "cell_type": "code", "source": [ "param_grid = dict(kmeans__n_clusters=range(2, 20))\n", "grid_clf = GridSearchCV(pipeline, param_grid, cv=3, verbose=2)\n", "grid_clf.fit(X_train, y_train)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "CJcg77rljlms", "outputId": "591abfbc-8fd5-48ca-9123-ee1bceb033e2" }, "execution_count": 160, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Fitting 3 folds for each of 18 candidates, totalling 54 fits\n", "[CV] END ...............................kmeans__n_clusters=2; total time= 0.3s\n", "[CV] END ...............................kmeans__n_clusters=2; total time= 0.4s\n", "[CV] END ...............................kmeans__n_clusters=2; total time= 0.3s\n", "[CV] END ...............................kmeans__n_clusters=3; total time= 0.4s\n", "[CV] END ...............................kmeans__n_clusters=3; total time= 0.4s\n", "[CV] END ...............................kmeans__n_clusters=3; total time= 0.3s\n", "[CV] END ...............................kmeans__n_clusters=4; total time= 0.3s\n", "[CV] END ...............................kmeans__n_clusters=4; total time= 0.4s\n", "[CV] END ...............................kmeans__n_clusters=4; total time= 0.4s\n", "[CV] END ...............................kmeans__n_clusters=5; total time= 0.6s\n", "[CV] END ...............................kmeans__n_clusters=5; total time= 0.5s\n", "[CV] END ...............................kmeans__n_clusters=5; total time= 0.5s\n", "[CV] END ...............................kmeans__n_clusters=6; total time= 0.5s\n", "[CV] END ...............................kmeans__n_clusters=6; total time= 0.5s\n", "[CV] END ...............................kmeans__n_clusters=6; total time= 0.5s\n", "[CV] END ...............................kmeans__n_clusters=7; total time= 0.8s\n", "[CV] END ...............................kmeans__n_clusters=7; total time= 0.5s\n", "[CV] END ...............................kmeans__n_clusters=7; total time= 0.5s\n", "[CV] END ...............................kmeans__n_clusters=8; total time= 0.6s\n", "[CV] END ...............................kmeans__n_clusters=8; total time= 0.8s\n", "[CV] END ...............................kmeans__n_clusters=8; total time= 0.7s\n", "[CV] END ...............................kmeans__n_clusters=9; total time= 0.8s\n", "[CV] END ...............................kmeans__n_clusters=9; total time= 0.7s\n", "[CV] END ...............................kmeans__n_clusters=9; total time= 0.7s\n", "[CV] END ..............................kmeans__n_clusters=10; total time= 0.8s\n", "[CV] END ..............................kmeans__n_clusters=10; total time= 1.0s\n", "[CV] END ..............................kmeans__n_clusters=10; total time= 0.9s\n", "[CV] END ..............................kmeans__n_clusters=11; total time= 1.4s\n", "[CV] END ..............................kmeans__n_clusters=11; total time= 1.5s\n", "[CV] END ..............................kmeans__n_clusters=11; total time= 1.3s\n", "[CV] END ..............................kmeans__n_clusters=12; total time= 1.4s\n", "[CV] END ..............................kmeans__n_clusters=12; total time= 1.6s\n", "[CV] END ..............................kmeans__n_clusters=12; total time= 1.8s\n", "[CV] END ..............................kmeans__n_clusters=13; total time= 2.0s\n", "[CV] END ..............................kmeans__n_clusters=13; total time= 1.7s\n", "[CV] END ..............................kmeans__n_clusters=13; total time= 1.9s\n", "[CV] END ..............................kmeans__n_clusters=14; total time= 2.0s\n", "[CV] END ..............................kmeans__n_clusters=14; total time= 2.2s\n", "[CV] END ..............................kmeans__n_clusters=14; total time= 2.1s\n", "[CV] END ..............................kmeans__n_clusters=15; total time= 2.5s\n", "[CV] END ..............................kmeans__n_clusters=15; total time= 2.2s\n", "[CV] END ..............................kmeans__n_clusters=15; total time= 2.3s\n", "[CV] END ..............................kmeans__n_clusters=16; total time= 2.8s\n", "[CV] END ..............................kmeans__n_clusters=16; total time= 2.9s\n", "[CV] END ..............................kmeans__n_clusters=16; total time= 2.8s\n", "[CV] END ..............................kmeans__n_clusters=17; total time= 3.1s\n", "[CV] END ..............................kmeans__n_clusters=17; total time= 2.9s\n", "[CV] END ..............................kmeans__n_clusters=17; total time= 2.9s\n", "[CV] END ..............................kmeans__n_clusters=18; total time= 3.3s\n", "[CV] END ..............................kmeans__n_clusters=18; total time= 3.1s\n", "[CV] END ..............................kmeans__n_clusters=18; total time= 2.9s\n", "[CV] END ..............................kmeans__n_clusters=19; total time= 3.0s\n", "[CV] END ..............................kmeans__n_clusters=19; total time= 3.1s\n", "[CV] END ..............................kmeans__n_clusters=19; total time= 3.2s\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "GridSearchCV(cv=3,\n", " estimator=Pipeline(steps=[('kmeans',\n", " KMeans(n_clusters=50, random_state=42)),\n", " ('log_reg',\n", " LogisticRegression(max_iter=5000,\n", " multi_class='ovr',\n", " random_state=42))]),\n", " param_grid={'kmeans__n_clusters': range(2, 20)}, verbose=2)" ] }, "metadata": {}, "execution_count": 160 } ] }, { "cell_type": "code", "source": [ "grid_clf.best_params_" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "9RmSYkxEjwYf", "outputId": "6a9715a4-9452-405b-e20c-c131f3d24abc" }, "execution_count": 161, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "{'kmeans__n_clusters': 18}" ] }, "metadata": {}, "execution_count": 161 } ] }, { "cell_type": "code", "source": [ "grid_clf.score(X_test, y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "syMQxC39jwzJ", "outputId": "d4cec9d6-a09b-4820-8228-39651adb7e2a" }, "execution_count": 162, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.96" ] }, "metadata": {}, "execution_count": 162 } ] }, { "cell_type": "markdown", "source": [ "### Using Clustering for Semi-Supervised Learning" ], "metadata": { "id": "HkGriveijyLO" } }, { "cell_type": "markdown", "source": [ "Another use case for clustering is in semi-supervised learning, when we have plenty of unlabeled instances and very few labeled instances.\n", "\n", "Let's look at the performance of a logistic regression model when we only have 50 labeled instances:" ], "metadata": { "id": "RitVYWXYj5G8" } }, { "cell_type": "code", "source": [ "n_labeled = 50" ], "metadata": { "id": "vkci_970j2AW" }, "execution_count": 163, "outputs": [] }, { "cell_type": "code", "source": [ "log_reg = LogisticRegression(multi_class=\"ovr\", solver=\"lbfgs\", random_state=42)\n", "log_reg.fit(X_train[:n_labeled], y_train[:n_labeled])\n", "log_reg.score(X_test, y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5g5AYlvJj7R2", "outputId": "27b70199-68d2-4867-a58c-b9af6dd4b62d" }, "execution_count": 164, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.8333333333333334" ] }, "metadata": {}, "execution_count": 164 } ] }, { "cell_type": "markdown", "source": [ "It's much less than earlier of course. Let's see how we can do better. First, let's cluster the training set into 50 clusters, then for each cluster let's **find the image closest to the centroid. We will call these images the representative images:**" ], "metadata": { "id": "eRBErxUFkD4X" } }, { "cell_type": "code", "source": [ "k = 50\n", "kmeans = KMeans(n_clusters=k, random_state=42)\n", "X_digits_dist = kmeans.fit_transform(X_train)\n", "representative_digit_idx = np.argmin(X_digits_dist, axis=0)\n", "X_representative_digits = X_train[representative_digit_idx]" ], "metadata": { "id": "7xWyUhAzkEzH" }, "execution_count": 165, "outputs": [] }, { "cell_type": "markdown", "source": [ "Now let's plot these representative images and label them manually:" ], "metadata": { "id": "SAO9pqHakPz-" } }, { "cell_type": "code", "source": [ "plt.figure(figsize=(8, 2))\n", "for index, X_representative_digit in enumerate(X_representative_digits):\n", " plt.subplot(k // 10, 10, index + 1)\n", " plt.imshow(X_representative_digit.reshape(8, 8), cmap=\"binary\", interpolation=\"bilinear\")\n", " plt.axis('off')\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 140 }, "id": "dcxow1HUkNr-", "outputId": "47081e97-eef0-45a7-f33f-a93ef53a36ef" }, "execution_count": 166, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "# Assuming we manually label these digits\n", "y_train[representative_digit_idx]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "HyAAW_otkS1f", "outputId": "18c125b7-f1dc-4555-9f31-fef1513e5a19" }, "execution_count": 168, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([4, 8, 0, 6, 8, 3, 7, 7, 9, 2, 5, 5, 8, 5, 2, 1, 2, 9, 6, 1, 1, 6,\n", " 9, 0, 8, 3, 0, 7, 4, 1, 6, 5, 2, 4, 1, 8, 6, 3, 9, 2, 4, 2, 9, 4,\n", " 7, 6, 2, 3, 1, 1])" ] }, "metadata": {}, "execution_count": 168 } ] }, { "cell_type": "code", "source": [ "y_representative_digits = y_train[representative_digit_idx]" ], "metadata": { "id": "x948FHgfkZNO" }, "execution_count": 169, "outputs": [] }, { "cell_type": "markdown", "source": [ "Now we have a dataset with just 50 labeled instances, but instead of being completely random instances, each of them is a representative image of its cluster. Let's see if the performance is any better:" ], "metadata": { "id": "cD9U11nHkdpG" } }, { "cell_type": "code", "source": [ "log_reg = LogisticRegression(multi_class=\"ovr\", solver=\"lbfgs\", max_iter=5000, random_state=42)\n", "log_reg.fit(X_representative_digits, y_representative_digits)\n", "log_reg.score(X_test, y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KVjHsaOskZ7W", "outputId": "e7d51462-5fc3-497f-cc21-b8bd48267a62" }, "execution_count": 170, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.9222222222222223" ] }, "metadata": {}, "execution_count": 170 } ] }, { "cell_type": "markdown", "source": [ "We jumped from 83.3% accuracy to 92.2%, although we are still only training the model on 50 instances. Since it's often costly and painful to label instances, especially when it has to be done manually by experts, it's a good idea to make them label representative instances rather than just random instances.\n", "\n", "But perhaps we can go one step further: **what if we propagated the labels to all the other instances in the same cluster?**" ], "metadata": { "id": "z0ZsKaR6kr0m" } }, { "cell_type": "code", "source": [ "y_train_propagated = np.empty(len(X_train), dtype=np.int32)\n", "for i in range(k):\n", " y_train_propagated[kmeans.labels_==i] = y_representative_digits[i]" ], "metadata": { "id": "xcvp7wKKkyMu" }, "execution_count": 171, "outputs": [] }, { "cell_type": "code", "source": [ "log_reg = LogisticRegression(multi_class=\"ovr\", solver=\"lbfgs\", max_iter=5000, random_state=42)\n", "log_reg.fit(X_train, y_train_propagated)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OVrOBxjokz1H", "outputId": "d17fcb91-917b-4886-e047-e8dfc2e8dc03" }, "execution_count": 172, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "LogisticRegression(max_iter=5000, multi_class='ovr', random_state=42)" ] }, "metadata": {}, "execution_count": 172 } ] }, { "cell_type": "code", "source": [ "log_reg.score(X_test, y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "wvjGUNwIk1lH", "outputId": "f965a33e-060e-49cf-bfd4-cb3a9a4513bf" }, "execution_count": 173, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.9333333333333333" ] }, "metadata": {}, "execution_count": 173 } ] }, { "cell_type": "markdown", "source": [ "We got a tiny little accuracy boost. Better than nothing, **but we should probably have propagated the labels only to the instances closest to the centroid, because by propagating to the full cluster, we have certainly included some outliers.** Let's only propagate the labels to the 75th percentile closest to the centroid:" ], "metadata": { "id": "hYglrEiik27u" } }, { "cell_type": "code", "source": [ "percentile_closest = 75\n", "\n", "X_cluster_dist = X_digits_dist[np.arange(len(X_train)), kmeans.labels_]\n", "for i in range(k):\n", " in_cluster = (kmeans.labels_ == i)\n", " cluster_dist = X_cluster_dist[in_cluster]\n", " cutoff_distance = np.percentile(cluster_dist, percentile_closest)\n", " above_cutoff = (X_cluster_dist > cutoff_distance)\n", " X_cluster_dist[in_cluster & above_cutoff] = -1" ], "metadata": { "id": "tGl67Mrgk-yn" }, "execution_count": 174, "outputs": [] }, { "cell_type": "code", "source": [ "partially_propagated = (X_cluster_dist != -1)\n", "X_train_partially_propagated = X_train[partially_propagated]\n", "y_train_partially_propagated = y_train_propagated[partially_propagated]" ], "metadata": { "id": "mP1asARqlAgP" }, "execution_count": 175, "outputs": [] }, { "cell_type": "code", "source": [ "log_reg = LogisticRegression(multi_class=\"ovr\", solver=\"lbfgs\", max_iter=5000, random_state=42)\n", "log_reg.fit(X_train_partially_propagated, y_train_partially_propagated)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "yPqX-hDclCUV", "outputId": "253e83d8-7925-4215-ac53-8b2167daef84" }, "execution_count": 176, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "LogisticRegression(max_iter=5000, multi_class='ovr', random_state=42)" ] }, "metadata": {}, "execution_count": 176 } ] }, { "cell_type": "code", "source": [ "log_reg.score(X_test, y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "sM6SiaJSlDt2", "outputId": "a3a6affd-19d2-4dd0-f641-20ef5dad4977" }, "execution_count": 177, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.9355555555555556" ] }, "metadata": {}, "execution_count": 177 } ] }, { "cell_type": "markdown", "source": [ "A bit better. With just 50 labeled instances (just 5 examples per class on average!), we got 93.5% performance, which is getting closer to the performance of logistic regression on the fully labeled digits dataset." ], "metadata": { "id": "Undkod_hlNpt" } }, { "cell_type": "code", "source": [ "np.mean(y_train_partially_propagated == y_train[partially_propagated])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Z31E9T9_leml", "outputId": "997c2543-ddc4-4728-db9a-1a2fbd3cf8ff" }, "execution_count": 178, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.9750747756729811" ] }, "metadata": {}, "execution_count": 178 } ] }, { "cell_type": "markdown", "source": [ "You could also do a few iterations of active learning:\n", "\n", "1. Manually label the instances that the classifier is least sure about, if possible by picking them in distinct clusters.\n", "2. Train a new model with these additional labels." ], "metadata": { "id": "QqP69ECmlhJV" } }, { "cell_type": "markdown", "source": [ "### Feature agglomeration" ], "metadata": { "id": "9-bBPvHMgqFC" } }, { "cell_type": "markdown", "source": [ "`cluster.FeatureAgglomeration` applies Hierarchical clustering to group together features that behave similarly." ], "metadata": { "id": "SM_QtDIooF98" } }, { "cell_type": "code", "source": [ "X, y = load_iris(return_X_y=True)" ], "metadata": { "id": "-JqxixPEfyXO" }, "execution_count": 179, "outputs": [] }, { "cell_type": "code", "source": [ "#set n_clusters to 2, the output will be two columns of agglomerated features (iris has 4 features)\n", "agglo = FeatureAgglomeration(n_clusters=2).fit_transform(X)" ], "metadata": { "id": "9IvTKFMNnjiv" }, "execution_count": 182, "outputs": [] }, { "cell_type": "code", "source": [ "plt.scatter(agglo[:,0],agglo[:,1],c=y)\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "id": "1ag31qi9nmF5", "outputId": "398f8927-6346-4b1a-b94a-894c0b5f94c3" }, "execution_count": 184, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "" ], "metadata": { "id": "6_wK8MRjn8Z8" }, "execution_count": null, "outputs": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false }, "colab": { "name": "11_DR_Clustering.ipynb", "provenance": [], "collapsed_sections": [], "toc_visible": true } }, "nbformat": 4, "nbformat_minor": 0 }